Get started
Back to blog

Feature toggle vs feature flag: is there actually a difference?

No. They mean the same thing.

You will find blog posts that try to draw a distinction. Most of them are wrong, or they’re drawing a line that nobody in practice cares about. Some teams say “toggle” when they mean a boolean on/off switch and “flag” when they mean something with variants. Other teams use “flag” for everything. Martin Fowler’s original article from 2017 uses “toggle” throughout. LaunchDarkly and most of the industry use “flag.”

Both words refer to the same technique: wrapping a code path behind a conditional that can be changed at runtime, without redeploying.

So why two names?

Because the technique showed up independently in different places. Early versions were often called “feature switches” or “feature flippers.” Fowler standardized “toggle” in the early discussion around continuous delivery. The word “flag” comes from a different tradition: the UNIX --flag style of command-line arguments, and before that, from early military and aviation signaling.

Today “feature flag” has won. It is the more searched term. It is what most tools call themselves (Flagify, LaunchDarkly, Split, Unleash, Flagsmith). “Feature toggle” is still common in academic and conference contexts, and in older codebases, but it is losing ground.

Other synonyms you will run into

  • Feature switch — usually refers to a simple on/off flag
  • Feature flipper — older term, now rare
  • Release toggle — a flag used specifically to gate a release
  • Experiment flag — a flag used for A/B testing
  • Kill switch — a flag used specifically to disable a feature in an emergency

These are more useful as type distinctions than as synonyms. Once you have more than a handful of flags in your system, you want to know at a glance which ones are temporary release flags and which ones are permanent kill switches. The name of the flag itself is where this lives, not the category term.

What matters more than the name

Naming arguments are a symptom of a deeper problem, which is that people treat all flags the same way. They don’t have different lifecycles. A release flag should be dead in three weeks. A kill switch should live forever. If you treat them the same, you will either leave release flags in the code for months (technical debt), or you will delete kill switches (no more safety net).

Read feature flag best practices for how to think about flag lifecycles.

If you are writing a doc or PR

Pick one term and use it consistently. If your team already uses “toggle,” stick with “toggle.” If you are writing for a broader audience, “feature flag” is safer because it is the SEO-dominant term. This matters more than you would think — we have watched engineers argue in PRs about the difference between “toggle” and “flag” when the actual code change was fine.

tl;dr

Feature toggle and feature flag are the same thing. Use whichever your team already uses. Focus on flag lifecycle and cleanup, not terminology.


Want to set up feature flags in your project? Flagify gives you flags with sub-millisecond evaluation and a CLI that fits your workflow. Check the quick start or start with the What are feature flags guide.

Start for free — no credit card required.