Feature Flag Simulator

Delivering Growth

All Resources

Flag Editor

Evaluate Flag

Create a flag in the Flag Editor above

Evaluation Ledger(0 evaluations)

No evaluations yet. Evaluate a flag to see results here.

How it works

Watch a demo of the Feature Flag Simulator ⤴

This feature flag simulator helps you understand how feature flags work and test flag configurations before deploying them to production. You can define multiple flags, each with their own rules (always on, always off, or percentage rollout) and evaluate how they behave for different users.

The evaluation is deterministic: the same user ID with the same parameters will always get the same result for the same flag (unless the flag definition changes). The hash calculation includes the user ID, flag name, and all parameters (sorted), so different parameters can change the result. This matches how real-world feature flag systems work, ensuring consistent user experiences while supporting attribute-based targeting.

Flag Editor: The Flag Editor is equivalent to a feature flagging service or tool where you configure and manage your flags. This is like using LaunchDarkly, Optimizely, Split.io, or your own internal feature flagging service. In the Flag Editor, you create and manage multiple flags, each with a name, rule type, and optional rollout percentage. When you edit a flag's configuration, the version number increments automatically, allowing you to track changes over time—just like how real feature flagging services version flag configurations.

Evaluate Flag: The Evaluate Flag panel simulates what you would call from your code using an SDK. When you need to check a flag value in your application (e.g., if (flagService.isEnabled("new-checkout", userId))), you're essentially doing what this panel does: passing a flag name, user ID, and optional context parameters, then receiving back whether the flag is on or off. This is what SDKs from LaunchDarkly, Optimizely, Split.io, and other services do under the hood.

Evaluation: Select a flag from the dropdown and test it by providing a user ID. The simulator will show you whether that user would receive the flag as on or off. You can add optional parameters (key-value pairs) that represent user attributes or context (e.g., country, plan, etc.). These parameters are included in the hash calculation for percentage rollouts, meaning the same user ID with different parameters can receive different results - this matches how real feature flag systems handle user targeting.

Bucket Calculation: For percentage rollouts, the system uses a deterministic hash of the user ID, flag name, and all parameters (sorted by key) to assign users to buckets (0-99). The bucket number determines whether the flag is on or off based on the rollout percentage. This ensures consistent results: the same user with the same parameters will always get the same result, but different parameters can change the bucket assignment. The bucket value is shown in the evaluation ledger for transparency.

Evaluation Ledger: All evaluations are logged with timestamp, user ID, result, definition version, parameters, and bucket (for rollouts). You can export the ledger as CSV for analysis. The definition version helps track how results change when flag configurations are updated.

What to Try

Create Multiple Flags

Create several flags with different configurations (always on, always off, different rollout percentages). You can see all your flags listed in the Flag Editor and switch between them when evaluating.

Try: Create flags like "new-checkout", "premium-features", "beta-ui" with different rules

Test Deterministic Assignment

Evaluate the same user ID multiple times with the same flag. You should always get the same result, demonstrating deterministic behavior.

Try: Evaluate user "test_user_123" multiple times with the same flag

Test Version Tracking

Edit a flag's configuration (e.g., change from 50% to 75% rollout) and save. Notice how the version increments. Evaluate the same user again to see how the result might change with the new version.

Try: Edit a flag, change rollout percentage, save, then evaluate same user ID again

Test Percentage Rollout

Set up a 50% rollout and evaluate multiple different user IDs. Approximately half should be "on" and half should be "off". The distribution is deterministic based on user ID hashing.

Suggested: 50% rollout, evaluate users "user_1" through "user_20"

Export and Analyze

Run multiple evaluations across different flags and export the ledger as CSV. You can analyze the distribution, see which users got which results, and verify the rollout percentages match expectations.

Try: Evaluate 50+ users across multiple flags, then export CSV to analyze distribution

Community

Need help implementing feature flags or experiments?

Turn insights from this simulator or calculator into real results. The Delivering Growth Community (free to join) helps PMs, engineers, and founders build experimentation systems that drive conversion, activation, and retention. You'll learn to do this without bloated tooling or siloed teams.

  • ✅ Guidance on A/B testing infrastructure and reliable experiments
  • ✅ Code templates and patterns from top Growth teams
  • ✅ Community of growth practitioners sharing wins and strategies
Join for Free