{{ result.summary.heading }}
{{ result.summary.primary }}
{{ result.summary.line }}
{{ badge.label }}
Feature flag cleanup inputs
Name the product area, service, or cleanup sweep you are reviewing.
Choose how aggressively the checker should queue temporary flags for cleanup.
Use today for a live review, or a release date for a planned cleanup queue.
Paste an exported flag list. Header aliases from common feature-flag catalogs are normalized locally in the browser.
{{ sourceMeta }}
Quarterly cleanup usually starts near 90 days; strict release trains can use shorter windows.
days
Use the same window your feature-flag platform uses for checks or evaluations.
days
Keep this short so cleanup tickets do not drift past the rollout date unnoticed.
days
Use a compact value for screenshots or a larger value for handoff exports.
rows
Include permanent review signals
Permanent flags are not treated as stale cleanup by default, but old or ownerless permanent controls should still be reviewed.
Raise missing owners
Treat missing owners as release-blocking review work instead of routine cleanup metadata.
{{ header }} Copy
{{ cell }}
No rows for the current feature flag inventory.

        
Customize
Advanced
:

Introduction

Feature flag cleanup is the lifecycle work that removes temporary release gates after the feature, experiment, or rollback path no longer needs them. A flag that stays in place after rollout can keep dead branches in application code, increase test combinations, hide owner gaps, and make later incidents harder to reason about.

The useful cleanup question is not just whether a flag exists. A good review checks age, expiry date, rollout state, recent usage, code references, dependencies, owner assignment, and whether the flag is temporary or permanent. A release flag at 100% rollout with no recent checks and no code references is very different from a kill switch that still protects production behavior.

Feature flag cleanup review flow A flow from flag inventory fields through lifecycle checks into cleanup decisions, queue rows, chart output, and export records. Inventory Lifecycle checks Cleanup decision Handoff key, owner, dates status, rollout usage, refs, deps expired or stale recent checks permanent review archive candidate remove code blocked or review snapshot queue chart + JSON Archive-ready, remove-code, review, and blocked work stay separated for safer cleanup planning.
Cleanup evidence is strongest when flag catalog data, usage data, and code-reference data are reviewed together.

Cleanup results should be treated as triage. They help a team decide which flags need code removal, dependency work, owner review, archive checks, or continued monitoring, but they do not replace production validation or a platform-specific archive workflow.

Technical Details:

Temporary feature flags usually become cleanup candidates when three signals line up: the rollout has reached a final state, the flag is old enough or past its cleanup date, and traffic or code evidence suggests the flag is no longer needed for active behavior. Permanent operational controls need a different review path because kill switches, permission guards, entitlement checks, and circuit breakers can remain useful after a release is stable.

The checker models those two paths separately. It normalizes rows from headered CSV or legacy column order, then evaluates each flag against the selected policy thresholds. Recognized fields include flag key, owner, created date, expiry date, lifecycle status, flag type, rollout percentage, last seen date, recent check count, code-reference count, dependency count, environments, and notes.

Recent usage can be shown by a nonzero check count or a recent last-seen date. Code references matter because archiving a flag while application code still evaluates it can leave the application on fallback behavior. Dependencies matter because parent or child flags can make cleanup unsafe until rollout relationships are removed or confirmed.

Feature flag cleanup policy preset thresholds
Cleanup policy Stale age Usage window Expiry grace Typical use
Quarterly cleanup 90 days 30 days 14 days Routine cleanup reviews that keep stale release flags from accumulating across sprints.
Release hygiene 60 days 30 days 7 days Monthly or release-close reviews where completed rollout work should not drift for a full quarter.
Strict launch gate 30 days 14 days 0 days Release trains that expect cleanup evidence before the launch work is considered closed.

Decision priority is intentionally conservative. Dependency blockers outrank ordinary cleanup because parent or child flag links can make removal unsafe. An expired flag with partial rollout becomes a rollout-state problem before it becomes an archive candidate. A flag with zero code references can move toward archive only when usage, age, status, or expiry evidence also supports cleanup.

Feature flag cleanup decisions and meanings
Decision Common trigger Recommended next check
Dependency block Dependencies remain while the flag also looks expired, stale, unused, completed, or clear of code references. Remove parent or child relationships before archiving or removing branches.
Resolve rollout state The flag is expired beyond grace while rollout is still between 0% and 100%. Finish rollout, disable the flag, or extend the cleanup date with an owner-approved reason.
Remove code Code references remain while the flag appears expired, completed, stale, unused, or uniformly rolled out. Open a cleanup pull request, rerun code-reference checks, then archive.
Archive candidate No code references remain and cleanup evidence supports removal from the flag platform. Confirm fallback behavior and platform archive checks before archiving.
Owner review or add cleanup date The owner is missing, or a temporary flag has no cleanup date. Assign ownership and backfill lifecycle data before changing flag state.
Permanent review A long-lived operational flag is old, ownerless, or missing notes while permanent review is enabled. Confirm purpose, owner, fallback tests, and whether permanent classification still applies.
Monitor rollout The flag is active or partially rolled out without enough cleanup evidence. Keep monitoring until the rollout reaches a final state.
health score = clamp ( 0 , 100 , 100 - 1.1 × priority points parsed flags )

The health score is a trend indicator for similar reviews, not an automatic approval score. A small inventory with one high-priority blocker can score worse than a large inventory with several routine review rows, so the cleanup queue and evidence columns should drive the actual work order.

Everyday Use & Decision Guide:

Start with a review label that matches the service, product area, sprint, or release train. That label appears in the snapshot and exports, so a specific value such as checkout quarterly flag review is more useful than a generic team name.

Use Quarterly cleanup for a normal hygiene sweep, Release hygiene when completed launch work should be checked monthly, and Strict launch gate when cleanup should happen before a release train closes. The advanced thresholds should match the feature-flag platform or team standard you use for stale age, recent usage, and expiry grace.

  • Paste a CSV export with headers when possible. Header aliases are normalized, so common names such as flag, owner, created, expires, rollout, last used, checks, and code references can still parse.
  • Use the legacy column order only for quick copied rows: flag, owner, created, expires, status, type, rollout, last seen, checks, code references, dependencies, environments, and notes.
  • Leave Include permanent review signals on when permanent controls still need owner and note checks.
  • Leave Raise missing owners on for release reviews where an owner gap should become priority work.
  • Use Ledger row limit to keep the visible tables compact. The JSON output still keeps the normalized flag list.

The safest reading path is summary, then Cleanup Snapshot, then Cleanup Queue. The summary shows the queued count, archive-ready count, remove-code count, blocker count, and health badge. The snapshot explains the policy thresholds and aggregate evidence. The queue gives the first work items with priority, decision, action, and evidence.

Parsing and scoring run in the browser page against the pasted or loaded text. The checker does not fetch a feature-flag platform, scan a repository, or validate production traffic by itself. Treat copied CSV, downloaded JSON, exported DOCX tables, and chart images as release records because they can contain flag keys, owners, environments, and notes.

Step-by-Step Guide:

Review one inventory snapshot at a time so the queue, chart, and exports describe the same reference date and policy.

  1. Enter Review label with the service, sprint, or product area that should appear in exported evidence.
  2. Select Cleanup policy. Adjust stale age, usage window, and expiry grace in Advanced only when your team uses different thresholds.
  3. Set Reference date. Use the current date for a live review or a release date for a planned cleanup gate.
  4. Paste the inventory, drop a CSV or TXT file on the source field, use Browse CSV, or load one of the sample inventories.
  5. If parser notes appear, fix missing headers, skipped rows, or unexpected column order before relying on the queue.
  6. Read the badges in the summary, then open Cleanup Snapshot for aggregate evidence and Flag Review Ledger for every visible parsed flag.
  7. Open Cleanup Queue and handle blocked rows before remove-code rows, then archive candidates, then owner or lifecycle review rows.
  8. Use Flag Debt Mix Chart to show why the queue exists by reason category, or use JSON when a workflow needs normalized evidence.

Finish by checking the first few queue rows against the source platform before archiving anything. If the platform still shows recent evaluations, code references, or dependencies that were not in the pasted source, update the inventory and rerun the review.

Interpreting Results:

The primary number is the cleanup queue size. A queued flag has at least one action path beyond ordinary monitoring or already archived status. The queue includes archive candidates, remove-code rows, owner reviews, missing cleanup dates, permanent reviews, rollout-state problems, and dependency blockers.

Dependency block and Resolve rollout state should slow the review down. They mean the available evidence points to cleanup pressure, but something makes immediate archive or code removal unsafe. Remove code means application references still need cleanup before platform archiving. Archive candidate is the closest output to archive-ready, but it still needs a platform check and fallback confirmation.

Feature flag cleanup result cues and follow-up checks
Visible cue Best reading Follow-up check
Expired beyond grace The cleanup date has passed by more than the selected grace period. Confirm whether rollout should close, the date should be extended, or code removal should start.
No recent usage The source shows zero checks or a last-seen date outside the usage window. Check all production environments before treating the flag as unused.
Code references remain The flag key still appears in code-reference evidence. Remove branches and tests tied to the obsolete path, then rerun reference checks.
Owner gap No owner or maintainer was supplied for the flag. Assign an owner before changing rollout, cleanup date, or archive state.
Permanent review A long-lived control needs documentation, ownership, or fallback confirmation. Keep it separate from temporary release cleanup unless the team reclassifies it.

The chart groups reasons by archive-ready, remove-code, review, and blocked work. It is useful for a cleanup summary because it shows whether the queue is dominated by old completed flags, missing owners, dependency blockers, or code-reference work.

Worked Examples:

Completed release flag with code still present

A flag created 100 days ago has status launched, rollout 100, recent checks, and three code references. Under quarterly cleanup, the age and uniform rollout make it cleanup-relevant, but code references keep it in Remove code rather than archive. The next action is a cleanup pull request, followed by a fresh reference check.

Inactive flag with no owner and no code references

A flag with status inactive, zero checks, no code references, and no owner can become an Archive candidate or Owner review depending on the other evidence and priority order. If ownership is required for archive approval, assign the owner before closing the platform record.

Expired partial rollout

A release flag at 40% rollout with an expiry date past the grace period becomes Resolve rollout state. The evidence says the cleanup date has passed, but the partial rollout means the team needs to finish rollout, disable the flag, or extend the date before deleting code.

Permanent kill switch in an old service

A permanent kill switch can be old and still correct. With permanent review enabled, an old control with weak notes or missing ownership moves to Permanent review, not stale temporary cleanup. The right check is whether the control still has a named owner, tested fallback behavior, and a clear operational purpose.

FAQ:

Does a clean result mean every stale flag is gone?

No. The result depends on the inventory you paste or load. Missing environments, incomplete code-reference data, or stale usage exports can hide cleanup work.

Can permanent flags appear in the queue?

Yes, when permanent review is enabled and the flag is old, ownerless, or missing notes. The queue treats that as review work rather than temporary flag cleanup.

Why does a flag with 100% rollout still need code removal?

A uniform rollout can mean the flag no longer selects between real behaviors. If code references remain, branches and tests may still need cleanup before archive.

Why did a headerless CSV row parse differently than expected?

Without headers, the checker uses a fixed legacy order. Add a header row when your export columns differ from the expected order.

Does the checker connect to a feature-flag service?

No. It analyzes the pasted or loaded source text in the browser page. Export fresh platform data before using the result for cleanup tickets.

Glossary:

Feature flag
A runtime control that changes behavior without requiring a new deployment.
Temporary flag
A release, experiment, or migration flag that should usually be removed after the final state is reached.
Permanent flag
A long-lived operational, permission, entitlement, or kill-switch control that may remain after release cleanup.
Code reference
Evidence that application code still reads or branches on the flag key.
Dependency block
A parent, child, or prerequisite relationship that should be resolved before a flag is archived.
Usage window
The number of days used to decide whether last-seen or check-count evidence still looks recent.

References: