Chrome features

Enable with --enable-features, disable with --disable-features:

Name Description Enabled by default
ActiveContentSettingExpiry—✅
ActorFormFillingServiceEnableAddress—✅
ActorFormFillingServiceEnableCreditCard—✅
AdHighlightLabel
 Controls whether the ad highlight is annotated with a label describing the
 type of ad such as popup, sticky, or video.
❌
AIPageContentIncludePopupWindows
 Controls whether to include information about the page's open popup in
 AIPageContent.
✅
AIPageContentMissingSubframesFailSilently
 Controls whether a missing subframe while generating the APC proto is
 silently dropped. If false, the entire APC is considered failed when this
 happens. When true, the subframe is simply skipped but the rest of APC
 generation is unaffected.
✅
AllowDatapipeDrainedAsBytesConsumerInBFCache—✅
AllowURNsInIframes
 Enables URN URLs like those produced by Protected Audience auctions to be
 displayed by iframes (instead of requiring fenced frames).
✅
AndroidBlockGrammarSuggestionSpanInCompositionMode
 Blocks the grammar suggestion span in composition mode.
❌
AndroidBlockMisspellingSuggestionSpanInCompositionMode
 Blocks the misspelling suggestion span in composition mode.
❌
AndroidCaptureKeyEvents
 Capture Android key event objects to send them to the web contents when the
 IME sends composition texts.
✅
AndroidDevToolsFrontend
 DevTools frontend for Android.
❌
AndroidEnableBackgroundMediaLargeFormFactors
 Enables media to continue playing in the background.
✅
AndroidFallbackToNextSlot
 Fallback to next named service slot if launching a privileged service process
 hangs. In practice, this means if GPU launch hanges, then retry it once.
✅
AndroidForceTextInputStateUpdateUponFocus
 Forces an active text input state update calculation and push from the
 renderer process to browser whenever an editable view container gains focus.
✅
AndroidMediaInsertion
 Enables IMEs to insert media content such as images, gifs and stickers.
❌
AndroidNavigationBlurTransitionAnimation
 Enables a blur animation of the current page when navigating away from it.
❌
AndroidOpenIncognitoAsWindow—✅
AndroidPkAutocorrectUnderline
 Enables the physical keyboard autocorrect underline feature.
❌
AndroidPkAutocorrectUnderlineV2
 Enables the physical keyboard autocorrect underline feature V2.
❌
AndroidRemoveSetLocalFocusWorkaroundOnBaklava
 Removes the setLocalFocus workaround and delay for multi-display setups on
 Baklava and above.
✅
AndroidReplayDelKeyEvent
 Replay captured KEYCODE_DEL key down events when the IME deletes surrounding
 text.
✅
AndroidWarmUpSpareRendererWithTimeout
 Warm up a spare renderer after each navigation on Android.
❌
AomVpxUsePresentationThreadType
 Controls whether AOM/VPX decoders should use the presentation thread type.
✅
ApproximateGeolocationPermission—❌
ArtificialUIDelay
 Used to add an artificial delay for UI rendering during testing and
 debugging.
❌
AttachUnownedInnerWebContents
 Whether to allow attaching an inner WebContents not owned by the outer
 WebContents. This is for prototyping purposes and should not be enabled in
 production.
❌
AudioFocusDuckFlash
 Enables flash to be ducked by audio focus. This is enabled on Chrome OS which
 has audio focus enabled.
❌
AudioRendererMixerImmediatePause
 Immediately pauses AudioRendererMixer's underlying output sink when all
 inputs are removed on explicit player pauses instead of waiting for the
 10-second mixer pause delay.
❌
AudioServiceOutOfProcess
 Runs the audio service in a separate process.
❌
AudioServiceSandbox
 Enables the audio-service sandbox. This feature has an effect only when the
 kAudioServiceOutOfProcess feature is enabled.
❌
AudioWorkletJSDenormalEnabler
 Controls whether JavaScript execution inside AudioWorkletProcessor::Process()
 runs under strict IEEE-754 floating-point semantics (disabling FTZ/DAZ).
 Enabled by default as a remote kill-switch.
✅
AudioWorkletThreadPool
 A thread pool system for effective usage of RealtimeAudioWorkletThread
 instances.
✅
AudioWorkletThreadRealtimePriority
 A server-side switch for the kRealtimeAudio thread type of
 RealtimeAudioWorkletThread object. This can be controlled by a field trial,
 it will use the kNormal type thread when disabled.
✅
AutofillAcceptDomMutationAfterAutofillSubmission
 If enabled, we start forwarding submissions with source
 DOM_MUTATION_AFTER_AUTOFILL, even for non-password forms.
❌
AutofillAcrossIframesIosThrottling
 LINT.IfChange(autofill_across_iframes_ios_throttling)
 Throttles child frame extraction to a maximum number of child frames that
 can be extracted by applying the following rules: (1) remove the child frames
 from an individual form that busts the limit and (2) stop extracting child
 frames on other forms once the limit is reached across forms.
✅
AutofillAcrossIframesIosTriggerFormExtraction
 Controls whether to trigger form extraction when detecting a form activity on
 a xframe form.
✅
AutofillActionableAIPageContent
 When enabled, the extracted APC proto includes node geometry.
❌
AutofillActorFormFillingSplitOutContactInfo
 If enabled, ActorFormFillingServiceImpl will attempt to split requests for a
 form section fill (when relevant) into two sub-fills - one for a "contact
 info" sub-section and one for an "address" sub-section.
❌
AutofillActorMode
 Kill switch: If enabled, ChromeAutofillClient may enter the actor mode,
 changing how the UI, parsing and the server predictions work. For more
 context see: go/autofill-actor-mode-implementation
✅
AutofillActorRewriteCreditCardTriggerField
 Controls whether to rewrite the credit card trigger field to the first
 credit card number field in the same section.
✅
AutofillActorSuppressImport
 Controls whether all import tasks are suppressed when an Actor task is
 active on the tab in question. This also suppresses silent updates and
 saving to Autocomplete.
❌
AutofillAddressSuggestionsOnTyping
 Feature flag to control displaying of Autofill suggestions on
 unclassified fields based on prefix matching. These suggestions are displayed
 after the user typed a certain number of characters that match some data
 stored in the user's profile.
 TODO(crbug.com/381994105): Cleanup when launched.
✅
AutofillAddressSuggestionsOnTypingHasStrikeDatabase
 Feature flag to controls whether Autofill on typing suggestions will have a
 strike database.
✅
AutofillAddressUserDeclinedSaveSurvey
 Feature flag controlling the display of surveys when a user declines the
 save prompt of Autofill address and a user does not have any address stored.
 The goal is to understand the reason and work towards improving acceptance.
❌
AutofillAddressUserDeclinedSuggestionSurvey
 Feature flag controlling the display of surveys when a user does not
 accept an Autofill suggestion. The goal is to understand the reason and work
 towards improving acceptance.
❌
AutofillAiAlwaysTriggerServerModel
 If enabled (and if AutofillAiServerModel is also enabled), this ignores
 the may_run_server_model boolean sent by the Autofill server and, instead,
 queries the server model for every encountered form that is not already
 cached locally.
 Only intended for testing.
❌
AutofillAiIgnoreGeoIp
 If enabled, no GeoIp requirements are imposed for AutofillAi.
 Note that this feature can be modified as follows (all assuming that
 kAutofillAiIgnoreGeoIp is enabled):
 - If both kAutofillAiIgnoreGeoIpAllowlist and
   kAutofillAiIgnoreGeoIpBlocklist are empty, then all geo IPs are
   permitted.
 - If only kAutofillAiIgnoreGeoIpBlocklist is non-empty, then all geo ips
   but those in kAutofillAiIgnoreGeoIpBlocklist are permitted.
 - If kAutofillAiIgnoreGeoIpAllowlist is non-empty, then only geo ips in
   kAutofillAiIgnoreGeoIpAllowlist are permitted.

 Both the allowlist and the blocklist are expected to consist of
 comma-separated uppercase two-digit country codes (see documentation of
 GeoIpCountryCode.)
✅
AutofillAiImportConstraintsForSync
 When enabled, the entity-specific import constraints are enforced for data
 received through AUTOFILL_VALUABLE.
 TODO(crbug.com/542468992): Clean up when launched.
✅
AutofillAiLimitSuggestionWidth
 If enabled, Autofill AI suggestion width can be limited.
❌
AutofillAiNewUpdatePrompt
 If enabled, Autofill AI will use a new update prompt on Desktop that shows
 both the previous and the new value of an updated entity attribute.
✅
AutofillAiNoFillingIconsExperiment
 If enabled, Autofill AI filling suggestion do not have an icon.
❌
AutofillAiOnlineModelToggleNewTitle
 If enabled, Autofill AI Settings Page title uses "Smarter form understanding"
 instead of "Enhanced autofill".
✅
AutofillAiOrder
 If enabled, AutofillAi supports order entities.
✅
AutofillAiPrivateAiShadowMetric
 When inference through the non-PI AutofillAi online model is run (implying
 that AutofillAiUsePrivateAi is disabled) and this flag is enabled, an
 additional inference request through the PI stack is run to compute shadow
 metrics between the two results.
❌
AutofillAiSavePromptSurvey
 When enabled, a HaTS survey is shown after the save prompt for a walletable
 entity was interacted with.
❌
AutofillAiShipment
 If enabled, AutofillAi supports shipment entities.
✅
AutofillAiShowWalletDisabledBanner
 Controls whether a banner is shown in settings when wallet data sharing is
 disabled.
❌
AutofillAiUsePrivateAi
 If enabled, the client may trigger the server model for AutofillAI type
 predictions using Private AI Compute.
❌
AutofillAiWalletPassBranding2026
 Enables the 2026 Autofill AI Wallet Pass Branding Updates.
❌
AutofillAiWalletPrivatePassesCapability
 When enabled, account-related eligibility criteria (minor status, location)
 are determined based on a capability, rather than approximated through
 signals that were readily available in Chrome prior to the Autofill-specific
 capability (e.g., using geo-location).
❌
AutofillAiWalletPrivatePassesDeepLink
 If enabled, Wallet private pass entries in settings link to their pass
 details page rather than the generic pass overview page.
✅
AutofillAiWalletServerProvidedDeepLink
 If enabled, Wallet management URLs (pass_view_url) are used for deep
 linking to Google Wallet. Note that the processing of pass_view_url
 in Chrome sync happens unconditionally even if the feature is off.
❌
AutofillAiWalletShopping
 When enabled, orders and shipments from Google Wallet become available in
 Autofill for filling as read-only AutofillAi entities.
 TODO(crbug.com/542022094): Clean up when launched.
❌
AutofillAllowFillingModifiedInitialValues
 When enabled, autofill will fill not skip filling fields that had an initial
 value which was modified.
✅
AutofillAmbientAutofill
 When enabled, the ambient autofill experience is enabled in Chrome.
❌
AutofillAmbientAutofillFilterEntitiesWithoutSource
 Controls whether Personal Context entities without attached sources are
 filtered out during Ambient Autofill prefetch validation.
❌
AutofillAmbientAutofillSourceAttribution
 When enabled, Personal Context Autofill AI suggestions display detailed
 source info submenus on Desktop.
❌
AutofillAmbientAutofillSpiiCache
 Controls whether the spii cache is enabled for Ambient Autofill.
❌
AutofillAmbientAutofillSuppression
 Controls whether pContext suggestion suppression in Ambient Autofill is
 enabled, including the UI to suppress suggestions.
❌
AutofillAndroidDesktopKeyboardAccessoryRevamp
 If enabled, on Android desktop, the Autofill keyboard accessory will have a
 new behavior and design.
 TODO(crbug.com/438125774): Remove when launched.
❌
AutofillAndroidDesktopSuppressAccessoryOnEmpty
 If enabled, on Android desktop, Autofill keyboard accessory will be
 suppressed when there are no autofill suggestions.
❌
AutofillAndroidDisableSuggestionsOnJSFocus
 Controls whether user tap on an element is needed to show autofill
 suggestions. If enabled, this flag would disable android autofill suggestions
 if the focus on an element is Javascript-originated.
 DidReceiveLeftMouseDownOrGestureTapInNode() will show suggestions if the
 focus change occurred as a result of a gesture. See crbug.com/730764 for why
 showing autofill suggestions as a result of JavaScript changing focus is
 enabled on WebView.
 TODO(crbug.com/40286775) Clean up autofill feature flag
 kAutofillAndroidDisableSuggestionsOnJSFocus
❌
AutofillAndroidKeyboardAccessoryDynamicPositioning
 If enabled, on Android, the Autofill keyboard accessory will not be
 displayed attached to the keyboard but will be placed below or above the
 focused field. It works only for large form factor devices like tablets or
 desktops.
 TODO(crbug.com/438125774): Remove when launched.
❌
AutofillAndroidUseGlobalIdForFormComparison
 If enabled, on Android, form comparisons are done by comparing
 FormGlobalIds instead of checking form similarity via SimilarFormAs().
❌
AutofillAtMemory
 Feature flag for kAutofillAtMemory.
❌
AutofillAtMemoryDoubleCtrl
 If enabled, AtMemory can be triggered by pressing Ctrl twice.
❌
AutofillAtMemoryInactivityNudge
 Controls whether the Autosuggest nudging logic is used. If enabled, user are
 encouraged to use the AtMemory feature.
❌
AutofillAtMemoryPreviouslyFilled
 Controls whether the previously filled suggestions from AtMemory are shown.
 Takes no effect when kAutofillAtMemorySearchStatefulness is disabled.
✅
AutofillAtMemorySearchStatefulness
 When enabled, preserves the active AtMemory search query and fetched
 suggestions when the popup is dismissed, restoring them if the user reopens
 suggestions on the same field. State is reset once a suggestion is accepted
 or a different field is focused.
❌
AutofillAtMemorySupportContenteditableOnAndroid
 Controls whether contenteditable fields on Android are supported for
 AtMemory.
❌
AutofillAtMemorySupportTextAreaOnAndroid
 Controls whether <textarea> fields on Android are supported for AtMemory.
 When enabled, the keyboard accessory is shown on textareas with only the
 AtMemory entry point, and regular Autofill suggestions are not generated
 for them.
❌
AutofillAtMemoryTriggerShortcut
 If enabled, AtMemory can be triggered with a keyboard shortcut like
 Ctrl+Space.
❌
AutofillAtMemoryTriggerString
 If enabled, AtMemory can be triggered by typing the trigger string like "@@".
✅
AutofillBetterLocalHeuristicPlaceholderSupport
 When enabled, the placeholder is not considered a label fallback on the
 renderer side anymore. Instead, local heuristic will match regexes against
 either the label or the placeholder, depending on how high quality the label
 is. If no matche is found, local heuristics fall back to the other value.
 This feature can be thought of as "lightweight" multi-label support.
 TODO(crbug.com/320965828): Remove when launched.
❌
AutofillCheckTriggeringFieldDoesNotChangeDuringFilling
 Check that between the time a filling flow is triggered and the popup being
 displayed, the field id to anchor the popup on did not change.
 TODO(crbug.com/8233280): This is a kill-switch feature, remove once we are
 sure no bug was introduced.
✅
AutofillComplementCountryUsingPhoneNumber
 When enabled, deduce country of a new address profile based on the phone
 number if not explicitly observed.
❌
AutofillDelayApcForPredictions
 If enabled, FormPredictionsTracker will wait up to 1 second
 for Autofill to finish parsing forms pesent on a given tab before capturing
 APC. For more context see: go/autofill-actor-mode-implementation
 TODO(crbug.com/479794574): Convert to killswitch if no regressions are
 spotted.
❌
AutofillDisableAddressImport
 Kill switch for Autofill address import.
❌
AutofillDisableFilling
 Kill switch for Autofill filling.
❌
AutofillDisallowCountryCodeFilling
 When enabled, always use the country name and never fill country codes. When
 disabled, fill country codes on autocomplete=&quot;country&quot;.
❌
AutofillDisallowMoreHyphenLikeLabels
 LINT.IfChange(autofill_disallow_more_hyphen_like_labels)
 When enabled, the list of characters a label cannot exclusively consist of
 includes more hyphen-like characters: em-dash, minus sign and fullwidth
 hyphen-minus.
 TODO(crbug.com/440039204): Remove when launched.
❌
AutofillEnableAblationStudy
 Controls an ablation study in which autofill for addresses and payment data
 can be suppressed.
❌
AutofillEnableAddressFieldParserNG
 Enables a new implementation for address field parsing that is based on
 backtracking.
❌
AutofillEnableAutofillSettingsEnterprisePolicy
 When enabled, Autofill will support per domain and per data type enterprise
 policy.
❌
AutofillEnableEntryLimitInPopup
 When enabled, the height of the autofill popup is limited to show a fixed
 maximum number of entries.
✅
AutofillEnableExpandIbanRegexPattern
 When enabled, IBAN regex pattern matching is expanded to support more
 formats.
❌
AutofillEnableExpirationDateImprovements
 Enables a couple of improvements to credit card expiration date handling:
 - The autocomplete attribute values are rationalized with format strings
   like MM/YY from placeholders and labels in mind.
 - more fill follow.
 TODO(crbug.com/40266396): Remove once launched.
❌
AutofillEnableGermanTransliteration
 Control if Autofill supports German transliteration.
 TODO(crbug.com/328968064): Remove when/if launched.
❌
AutofillEnableImportOfUnchangedValuesForCountryAndState
 If enabled, the import of unchanged values for ADDRESS_HOME_COUNTRY and
 ADDRESS_HOME_STATE fields is enabled.
 TODO(crbug.com/40137859): Remove once launched.
❌
AutofillEnableImportWhenMultiplePhoneNumbers
 Controls whether to save the first number in a form with multiple phone
 numbers instead of aborting the import.
 TODO(crbug.com/40742746) Remove once launched.
❌
AutofillEnableKeyboardAccessoryOnSearchFields
 When enabled, the Keyboard Accessory on Android will be shown for search
 fields if any filling sources (e.g. fallback sheets or autofill) are
 available.
❌
AutofillEnableNonAffiliatedLoyaltyCardsFilling
 When enabled, Autofill will help users fill in non-affiliated loyalty cards
 on loyalty card only fields.
✅
AutofillEnableOneTimeCodeHeuristics
 When enabled, Autofill will use heuristics to identify OTP fields.
❌
AutofillEnableSkippingUnrecognizedAttribute
 Kill switch: If enabled, AutofillField may not suppress suggestions on
 field that has autocomplete=unrecognized attribute.
✅
AutofillEnableStreetAddressMergeModes
 If enabled, the missing merge modes will be re-enabled on nodes. To do that,
 MergeMode::kMergeChildrenAndReformatIfNeeded will be also added to all the
 nodes where required.
 TODO(crbug.com/447111009): Remove when launched.
❌
AutofillEnableWalletDisclosureNoticePublicPass
 When enabled, shows the Wallet Disclosure Notice after submitting a form with
 a public pass.
❌
AutofillEnableWalletReminderNoticePublicPass
 When enabled, shows the Wallet Reminder Notice after submitting a form with a
 non-private (public) pass.
❌
AutofillEnforceFormatStringCompatibility
 Controls whether Autofill clears format strings assigned to a field where
 none of the assigned field types are compatible with it.
✅
AutofillExtendZipCodeValidation
 Enables extended zip code validation.
 TODO(crbug.com/434140055): Clean up when launched.
❌
AutofillExtractOnlyNonAdFrames
 If enabled, only non-ad frames are extracted.
 Otherwise, non-ad frames as well as visible ad frames are extracted.
 "Extracted" means that FormFieldData::child_frames is populated, which is
 necessary for flattening these forms.
 The forms in those frames are extracted either way.
 TODO(crbug.com/40196220): Remove once launched.
❌
AutofillFixIframeOwnership
 When enabled, iframes are associated with the outermost ancestor form
 (analogous to form control ownership) rather than the closest ancestor form
 (analogous to form control association).
 TODO(crbug.com/536963555): Clean up when launched.
❌
AutofillFixLabelGenerationForStreetAddress
 Prioritizes ADDRESS_HOME_STREET_ADDRESS over postal code in inferred labels.
 See crbug.com/540151895.
✅
AutofillFixRewriterRules
 When enabled, the rewriter uses updated rewrite rules.
 TODO(crbug.com/445863287): Cleanup when launched.
✅
AutofillFixStateCountryMisclassification
 When enabled, the rationalization engine will fix misclassifications where
 a field is detected as a COUNTRY when it should be a STATE or vice versa.
 TODO(crbug.com/444180493): Cleanup when launched.
✅
AutofillGmailOtpPreLaunchMetrics
 Enables pre-launch metrics for one-time passwords (OTPs) received in Gmail.
❌
AutofillGreekRegexes
 When enabled, Greek regexes are used for parsing in branded builds.
✅
AutofillHideSuggestionsOnFocusChange
 When enabled, BrowserAutofillManager hides suggestions as soon as the
 renderer reports that the focus moved away from the field the suggestions
 were shown for (FocusOnFormField() for a different field or
 FocusOnNonFormField()). Without this, hiding relies on
 DidEndTextFieldEditing(), which Blink only sends for <input> elements, so
 suggestions shown for <textarea> or contenteditable elements leak into the
 keyboard accessory after the user taps away.
 TODO(crbug.com/570488818): Remove once the experiment is over.
❌
AutofillIgnoreLayoutInducedScrollEvents
 Keeps the Autofill popup open when layout reflow (kClamping or
 kAnchoring) produces a scroll event. The feature flag guards logic
 only on Desktop platforms.
 TODO(crbug.com/564353467): Remove once the experiment is over.
❌
AutofillImproveClassificationForTwoWordLastNames
 When enabled, corrects missclassification of NAME_LAST as NAME_LAST_SECOND in
 an absence of NAME_LAST_FIRST.
 TODO(crbug.com/400995432): Clean-up when launched.
❌
AutofillIntroduceGlobalEmptyValueRewriterRules
 If enabled, global rules are applied to rewrite empty string values like
 "null" to an empty string. These rules are applied for all types during
 address normalization.
❌
AutofillKeydownEditableElement
 If enabled, Blink informs WebAutofillClient not only about keydown events on
 text-type <input> but also on <textarea> and contenteditables, and
 WebAutofillClient may default-handle any of these events.
❌
AutofillLabelSensitiveAutocomplete
 TODO(crbug.com/346507576): Remove once the experiment is over.
 When enabled, makes autocomplete label sensitive.
❌
AutofillMergeAddressAndAutocompleteEmailSuggestions
 If enabled, add autocomplete suggestions for email fields to the currently
 shown address suggestions if they are valid email addresses.
 TODO(crbug.com/506033768): Remove when launched.
❌
AutofillModelPredictions
 When enabled, all behaviours related to the on-device machine learning
 model for field type predictions will be guarded.
 TODO(crbug.com/40276177): Remove when launched.
❌
AutofillMoveSmallFormLogicToClient
 When Enabled Autofill server will stop applying small form rule and Chrome
 will take care of this logic.
❌
AutofillNewSuggestionGeneration
 If enabled, the new suggestion generation logic is used.
 TODO(crbug.com/409962888): Remove once launched.
❌
AutofillOnlyConsiderSingleFieldFormsAsSearchForms
 When enabled, only single-field forms can be considered search forms (in
 addition to matching kUrlSearchActionRe on the form's action URL).
 TODO(crbug.com/566051797): Clean up when launched.
❌
AutofillOptimizeIsNormalizedNameVariantOf
 When enabled, IsNormalizedNameVariantOf() uses a linear-time greedy
 algorithm instead of an exponential one that generates all name variants.
 TODO(crbug.com/479905438) Remove once launched.
❌
AutofillPageLanguageDetection
 Enables detection of language from Translate.
 TODO(crbug.com/40158074): Cleanup when launched.
❌
AutofillPaymentsFieldSwapping
 When enabled, focusing on a credit card number field that was traditionally
 autofilled will yield all credit card suggestions.
 TODO(crbug.com/354175563): Remove when launched.
❌
AutofillPersonalizationAndTrustAddressSurvey
 If enabled, the user may be prompted a HaTS survey about the personalization
 experience and the perceived trust they have in the features.
 TODO(crbug.com/543741063): Transform to killswitch after some time.
❌
AutofillPersonalizationAndTrustAtMemorySurvey—❌
AutofillPersonalizationAndTrustAutofillAiSurvey—❌
AutofillPersonalizationAndTrustCreditCardSurvey—❌
AutofillPersonalizationAndTrustOneTimePasswordSurvey—❌
AutofillPolicyControlledFeatureAutofill
 Controls whether Autofill may fill across origins.
 In payment forms, the cardholder name field is often on the merchant's origin
 while the credit card number and CVC are in iframes hosted by a payment
 service provider. By enabling the policy-controlled feature "autofill" in
 those iframes, the merchant's website enable Autofill to fill the credit card
 number and CVC fields from the cardholder name field, even though this
 autofill operation crosses origins.
 TODO(crbug.com/40178859): Enable this feature.
❌
AutofillPolicyControlledFeatureManualText
 Controls whether Autofill warns about manual text input in cross-origin
 frames.
 This feature lives in Autofill code because of its close relationship to
 kAutofillCrossOriginAutofill.
 TODO(crbug.com/40178859): Enable this feature.
❌
AutofillPopupDontAcceptNonVisibleEnoughSuggestion
 If the feature is enabled, before triggering suggestion acceptance, the row
 view checks that a substantial portion of its content was visible for some
 minimum required period.
 TODO(crbug.com/337222641): During cleaning up, in the popup row view remove
 emitting of "Autofill.AcceptedSuggestionDesktopRowViewVisibleEnough".
❌
AutofillPopupUseDeleteSoon
 If enabled, PopupBaseView uses DeleteSoon instead of synchronous
 delete this during DoHide() when no widget has been created, and
 guards against double destruction or showing while hiding.
 TODO(crbug.com/524084900): Remove when launched.
❌
AutofillReplaceFormElementObserver
 Replaces blink::WebFormElementObserver usage in FormTracker by updated logic
 for tracking the disappearance of forms as well as other submission
 triggering events.
 TODO(crbug.com/40281981): Remove when launched.
❌
AutofillRequireFocusInFrameForSuggestions
 If enabled, AutofillPopupControllerImpl and
 AutofillKeyboardAccessoryControllerImpl require that the frame to which the
 suggestions are anchored has focus.
 TODO(crbug.com/536607604): Clean up when launched.
❌
AutofillResetAcceptanceBarrierOnDataListUpdate
 Kill switch: If enabled, AutofillPopupControllerImpl and
 AutofillKeyboardAccessoryControllerImpl reset barrier_for_accepting_ when
 datalist values are updated via UpdateDataListValues().
 TODO(crbug.com/514074839): Clean up after Nov 3, 2026.
✅
AutofillServerExperimentalSignatures
 TODO(crbug.com/435646513) - Clean-up after feature lands at 100% Stable.
 Enables the new experimental server-side signatures for evaluation purposes.
✅
AutofillServerUploadMoreData
 Enables uploading of more data to the Autofill server to use for computing
 signatures: go/autofill-signatures-more-data.
✅
AutofillShowGmailOtpSuggestions
 When enabled, autofill suggestions for one-time passwords (OTPs) from Gmail
 are shown.
❌
AutofillSmsOtpCrowdsourcingFetchFromGmscore
 If enabled, fetch sms otp from gmscore and upload votes for sms otp.
 TODO(crbug.com/453999673): Clean up when launched.
✅
AutofillStructuredFieldsDisableAddressLines
 If this feature is enabled, the AddressFieldParser does NOT try to parse
 address lines once it has found a street name and house number or other
 combinations of fields that indicate that an address form uses structured
 addresses. This should be the default in all countries with fully supported
 structured addresses. However, if a country is not sufficiently modeled,
 autofill may still do the right thing if it recognizes "Street name, house
 number, address line 2" as a sequence.
 TODO(crbug.com/40266693) Remove once launched.
❌
AutofillSupportCombinedZipAndCityFR
 Enables parsing of fields that combine postal code and city in France,
 e.g. a single field containing "75008 Paris".
 TODO(crbug.com/465119085): Clean up when launched.
❌
AutofillSupportSplitZipCode
 Enables splitting two-part zip codes into two fields while filling and
 importing split zip codes from two adjacent fields.
 TODO(crbug.com/369503318): Clean up when launched.
❌
AutofillSupportStandaloneZipCodeGlobally
 When enabled, standalone zip code fields are classified by local heuristics
 globally, instead of just a handful of countries.
❌
AutofillThrottleAskForValuesToFillByTriggerSource
 Kill switch: When enabled, AskForValuesToFill() throttling is skipped for
 browser-initiated and explicit user triggers.
 TODO(crbug.com/547562303): Clean up after September 15, 2026.
✅
AutofillThrottleBruteForceProbing
 Mitigates side-channel brute-force probing of autofill data by rate-limiting
 AskForValuesToFill() invocations per RenderFrame via a token bucket.
✅
AutofillTrackSelectFieldEdits
 Enables tracking of user edits to <select> fields that were not autofilled.
❌
AutofillUKMExperimentalFields—❌
AutofillUseINAddressModel
 Enables using a custom address model for India, overriding the legacy one.
❌
AutofillUseNegativePatternForAllAttributes
 When enabled, the form field parser won't try to match other attributes if
 any of the negative patterns matched.
❌
AutofillUseOriginalPayloadIos
 Kill switch: If enabled, use the original suggestion payload. If disabled,
 use a default GUID for payloads without a GUID [iOS specific].
 TODO(crbug.com/525996248): Remove after M154 branchpoint if there are no
 issues.
✅
AutofillUsePassedFormAndFieldIds
 Kill switch: If enabled, use the FormGlobalId and FieldGlobalId passed to
 AutofillExternalDelegate::Did{Select,Accept}Suggestion() instead of
 last_query_.
✅
AutofillUseStructuralSignatureInsteadOfSecondary
 Replaces the secondary signature with the structural signature for Uploads.
 For Queries still only the secondary (alternative) signature is used.
 TODO(crbug.com/431737839): Clean up when roll out finishes successfully.
✅
AutofillWipeInvalidNameStructure
 When enabled, FinalizeNameAddressComponent() wipes invalid name
 substructures regardless of the root node's verification status, and
 NameInfo::SetRawInfoWithVerificationStatus() invalidates child nodes when
 overwriting a non-empty full name with a non-token-equivalent value.
❌
AutoPictureInPictureOnWindowOccluded
 Allows the AutoPictureInPictureTabHelper to automatically enter
 picture-in-picture when a webpage is occluded by another window.
❌
AutoPictureInPicturePageInfoDetails
 Enables showing auto picture-in-picture permission details in page info.
✅
AutoPictureInPictureSurveys
 Enables Happiness Tracking Surveys for Auto Picture-in-Picture.
❌
AutoplayBypassForMicCamera
 Allows media to autoplay without a user gesture if the site has been
 granted microphone or camera permissions.
✅
AutoplayDisableSettings
 Whether we should show a setting to disable autoplay policy.
❌
AutoplayPoliciesAndroid
 Enables the Enterprise Autoplay policies (AutoplayAllowed and
 AutoplayAllowlist) on Android.
✅
AutoSpeculationRules
 https://crbug.com/1472970
❌
AutoupgradeMixedContent—✅
AVDColorSpaceChanges
 Whether we should allow color space changes to flush AcceleratedVideoDecoder.
✅
AvoidTrustedParamsCopies
 Avoids copying ResourceRequest::TrustedParams when possible.
✅
BackForwardCache
 Enable using the BackForwardCache.
✅
BackForwardCacheCCNSAllowlist
 When enabled, JavaScript network requests with "Cache-Control: no-store"
 headers from domains specified in kBackForwardCacheCCNSAllowedDomains will
 not disable Back/Forward cache.
❌
BackForwardCacheCCNSIgnoreUnchangedCookies
 WHen this flag is enabled, the cookies modification without cookie value
 change will not cause eviction of the back/forward cache entries with
 Cache-control: no-store header.
❌
BackForwardCacheDWCOnJavaScriptExecution—❌
BackForwardCacheEntryTimeout
 Set a time limit for the page to enter the cache. Disabling this prevents
 flakes during testing.
✅
BackForwardCacheMemoryControls
 BackForwardCacheMemoryControls is enabled only on Android to disable
 BackForwardCache for lower memory devices due to memory limitations.
❌
BackForwardCachePauseMicrotasks
 This is a kill switch for pausing microtask while the page is in the BFCache.
 Remove by m155 if things go well.
✅
BackgroundFetch
 Kill switch for Background Fetch.
✅
BackgroundFetchLocalNetworkAccess
 Enables Local Network Access checks for Background Fetch.
✅
BackgroundResourceFetch
 Enable background resource fetch in Blink. See https://crbug.com/1379780 for
 more details.
✅
BackgroundTracingPerformanceMark
 Used to configure a per-origin allowlist of performance.mark events that are
 permitted to be included in slow reports traces. See crbug.com/1181774.
❌
BackToAdIntervention
 If enabled, skips over ad-related entries that were silently inserted into
 session history when navigating via back/forward buttons. This extends the
 existing history manipulation intervention logic.
 See https://crbug.com/375523824.
❌
BakedGamutMapping
 Redefine the oklab and oklch spaces to have gamut mapping baked into them.
 https://crbug.com/1508329
❌
BatterySaverModeAlignWakeUps
 If enabled, makes battery saver request heavy align wake ups.
❌
BFCacheOpenBroadcastChannel
 TODO(https://crbug.com/327075943): Delete this.
✅
BFCacheWithSharedWorker
 TODO(https://crbug.com/431875857): Delete this.
✅
BlockMidiByDefault
 Block all MIDI access with the MIDI_SYSEX permission
✅
BlockPartialResponseWithoutRange—✅
BoostFontLoadingTaskPriority—✅
BoostImageSetLoadingTaskPriority
 Boost the priority of certain loading tasks (https://crbug.com/1470003).
✅
BoostNonRenderBlockingStyleLoadingTaskPriority—✅
BoostRenderBlockingStyleLoadingTaskPriority—✅
BoostRenderProcessForLoading
 If enabled, force renderer process foregrounded from CommitNavigation to
 DOMContentLoad (crbug/351953350).
✅
BoostVideoLoadingTaskPriority—✅
BrokerFileOperationsOnDiskCacheInNetworkService
 Broker file operations on disk cache in the Network Service.
 This is no-op if the network service is hosted in the browser process.
❌
BrowserInitiatedAutomaticPictureInPictureDryRun
 Enables Browser Initiated Automatic Picture-in-Picture (ChAP) in dry run
 mode.

 When enabled in dry run mode, all ChAP code paths are executed with the
 exception of actually opening the video PiP window, or any other paths that
 may be visible to the user experience. This flag will be used to enable
 analyzing the feature impact and catch early any potential regressions.
❌
BypassRedirectChecksPerRequest
 Allows the decision to bypass redirect checks to be made based on the
 specific request.
✅
CacheControlNoStoreEnterBackForwardCache
 Allows pages with cache-control:no-store to enter the back/forward cache.
 Feature params can specify whether pages with cache-control:no-store can be
 restored if cookies change / if HTTPOnly cookies change.
 TODO(crbug.com/40189625): Remove this feature and clean up.
✅
CacheDocumentOutgoingReferrer
 When enabled, caches the stripped outgoing referrer URL on Document.
✅
CacheStorageCodeCacheHintHeader
 When enabled allows the header name used in the blink
 CacheStorageCodeCacheHint runtime feature to be modified.  This runtime
 feature disables generating full code cache for responses stored in
 cache_storage during a service worker install event.  The runtime feature
 must be enabled via the blink runtime feature mechanism, however.
❌
Canvas2DAutoFlushParams
 Flushes canvas if the recording limit has been exceeded. This is a heuristic
 based on memory and GPU performance:
 - High memory usage causes discarded resources in low-end devices.
 - PaintOpBuffers that grow indefinitely. The OOPR-related jank is caused by
 long-running RasterCHROMIUM calls that monopolize the main thread
 of the GPU process. By flushing periodically, we allow the rasterization
 of canvas contents to be interleaved with other compositing and UI work.

 The default values for these parameters were initially determined
 empirically. They were selected to maximize the MotionMark score on
 desktop computers. Field trials may be used to tune these parameters
 further by using metrics data from the field.
❌
Canvas2DHibernation
 Temporarily disabled due to issues:
 - PDF blank previews
 - Canvas corruption on ARM64 macOS
 See https://g-issues.chromium.org/issues/328755781
❌
Canvas2DHibernationDefer
 Defer canvas hibernation when visibility changed.
❌
Canvas2DHibernationNoSmallCanvas
 Don't hibernate small canvas elements.
❌
Canvas2DHibernationReleaseTransferMemory
 When hibernating, make sure that the just-used transfer memory (to transfer
 the snapshot) is freed.
❌
CapStringBuilderLengthTo1GiB—✅
CaptureJSExecutionLocation
 Whether to capture the source location of JavaScript execution, which is one
 of the renderer eviction reasons for Back/Forward Cache.
✅
CastStreamingAv1
 Controls whether mirroring negotiations will include the AV1 codec for video
 encoding.

 NOTE: currently only software AV1 encoding is supported.
 TODO(crbug.com/40246079): hardware AV1 encoding should be added.
❌
CastStreamingExponentialVideoBitrateAlgorithm
 Controls whether the new exponential bitrate calculate logic is used, or
 the legacy linear algorithm.
 TODO(crbug.com/302584587): This is the V2 implementation of this experiment,
 following the failure of the initial experiment.
❌
CastStreamingHardwareHevc—❌
CastStreamingMaxVideoBitrate—✅
CastStreamingPerformanceOverlay—❌
CastStreamingVp8
 Controls whether mirroring negotiations will include the VP8 codec for video
 encoding.

 NOTE: this is the default codec for Cast Streaming. Be careful when
 disabling.
✅
CastStreamingVp9
 Controls whether mirroring negotiations will include the VP9 codec for video
 encoding.
✅
CastVideoEncoderFrameDrop
 A video encoder is allowed to drop a frame in cast mirroring.
❌
CdmHostVerification
 CDM host verification is enabled by default. Can be disabled for testing.
 Has no effect if ENABLE_CDM_HOST_VERIFICATION buildflag is false.
✅
CdmProcessPriorityElevation
 Elevates the CDM service process' priority to improve media playback
 performance.
✅
CdmThreadPriorityElevation
 Elevates the CDM service process' main thread priority to improve media
 playback performance.
✅
ChildProcessSecurityPolicyRust
 Enables the experimental Rust implementation of ChildProcessSecurityPolicy.
 This includes managing global state but not per-process ProcessState (which
 is handled by the ChildProcessSecurityPolicyRustProcessState feature). See
 https://crbug.com/482216433.
❌
ChildProcessSecurityPolicyRustProcessState
 Controls whether the Rust implementation of ChildProcessSecurityPolicy
 manages per-process ProcessState. Only takes effect if
 ChildProcessSecurityPolicyRust is also enabled (for the global state). See
 https://crbug.com/522872468
❌
ClearCrossSiteCrossBrowsingContextGroupWindowName
 Clear the window.name property for the top-level cross-site navigations that
 swap BrowsingContextGroups(BrowsingInstances).
❌
ClearPipCachedBoundsWhenPermissionPromptVisible
 Safety switch to allow us to revert to the previous behavior of using the
 cached bounds when the permission prompt is visible. If this feature is
 enabled (the default), we will clear the cached bounds, whenever the
 permission prompt is visible.
✅
ClearSiteDataPrefetchPrerenderCache—✅
ClientHintsDeviceMemory_DEPRECATED
 Enable legacy device-memory client hint.
✅
ClientHintsDPR_DEPRECATED
 Enable legacy dpr client hint.
✅
ClientHintsResourceWidth_DEPRECATED
 Enable legacy width client hint.
✅
ClientHintsViewportWidth_DEPRECATED
 Enable legacy viewport-width client hint.
✅
ClipboardOnExtensionServiceWorker—✅
CoarseWallClockTimeSource
 Killswitch for coarsening CurrentMediaTime() to prevent high-resolution
 timing attacks (crbug.com/562970433). Remove after M157 reaches stable.
✅
CompositedAnimationsForceMainFrames—✅
CompressParkableStrings
 Disabling this will cause parkable strings to never be compressed.
 This is useful for headless mode + virtual time. Since virtual time advances
 quickly, strings may be parked too eagerly in that mode.
✅
ComputePressureRateObfuscationMitigation—✅
ConsumeCodeCacheOffThread
 Controls off-thread code cache consumption.
✅
ContentCaptureConstantStreaming
 Enables the constant streaming in the ContentCapture task.
✅
ContentSchemeIsLocal
 If enabled, content:// URLs are considered local, and won't be allowed
 to be downloaded.
❌
ContextMenuCopyVideoFrame
 Enables the "Copy Video Frame" context menu item.
✅
ContextMenuSaveVideoFrameAs
 Enables the "Save Video Frame As" context menu item.
 On Android, this is "Download Video Frame" context menu item.
✅
ContextMenuSearchForVideoFrame
 Enables the "Search Video Frame with <Search Provider>" context menu item.
✅
CrashReportingAPIMoreContextData—✅
CreateImageBitmapOrientationNone
 When enabled, add a new option, {imageOrientation: 'none'}, to
 createImageBitmap, which ignores the image orientation metadata of the source
 and renders the image as encoded.
❌
D3D11VideoDecoderUseSharedHandle—✅
DataURIMemoryCache—✅
DataUrlWorkerOpaqueOrigin—✅
DebugTopChromeWebUI
 Allows loading Top Chrome Webium.
❌
DeclarativeCSSModulesUseDataURI
 When enabled, Declarative CSS Modules will generate a DataURI instead of a
 Blob URL in the generated Import Map.
❌
DecodeScriptsInBlink—✅
DedicatedMediaServiceThread
 Runs the media service in the GPU process on a dedicated thread.
✅
DedicatedWorkerAblationStudyEnabled—❌
DefaultSiteInstanceGroups
 When enabled, puts non-isolated sites in separate SiteInstances in a default
 SiteInstanceGroup (per BrowsingInstance), rather than sharing a default
 SiteInstance.
✅
DeferAudioFocusUntilAudible
 Defer requesting persistent audio focus until the WebContents is audible.
 The goal is to prevent silent playback from taking audio focus from
 background apps on android, where focus is typically exclusive.
❌
DeferRendererTasksAfterInput—✅
DeferSessionStorageScavengingOnStartup
 Defer Session Storage scavenging to avoid LevelDB initialization blocking
 the critical path of startup.
❌
DeferSpeculativeRFHCreation
 Enables deferring the creation of the speculative RFH when the navigation
 starts. The creation of a speculative RFH consumes about 2ms and is blocking
 the network request. With this feature the creation will be deferred until
 the browser initializes the network request. The speculative RFH will be
 created while the network service is sending the request in parallel.
❌
DeferTreeBuilderFlush
 When enabled, HTMLTreeBuilder::Flush() will be throttled in kTextMode
 to reduce O(n^2) string copies.
 The first flush will always be allowed to complete immediately, then
 subsequent flushes will be throttled and will backoff exponentially up to a
 "max_interval". The "initial_interval" is the delay introduced after the
 first flush and is increased by "multiplier" for each subsequent flushes.
 See https://crbug.com/500385603 for more context and how the numbers were
 selected.
✅
DelayAsyncScriptExecution—❌
DelayLayerTreeViewDeletionOnLocalSwap—✅
DetectJSFrameworksOnWorker—✅
DeviceBoundSessionTerminationEvictBackForwardCache
 When a device bound session
 (https://github.com/w3c/webappsec-dbsc/blob/main/README.md) is
 terminated, evict pages with cache-control:no-store from the
 BFCache. Note that if kCacheControlNoStoreEnterBackForwardCache is
 disabled, no such pages will be in the cache.
❌
DevToolsAdsPanel—✅
DevToolsAllowInterestForcing
 Whether force-showing interest is enabled.
✅
DevToolsImprovedNetworkError
 Improves the signal-to-noise ratio of network error related messages in the
 DevTools Console.
 See http://crbug.com/124534.
❌
DigitalGoodsApi
 Controls whether the Digital Goods API is enabled.
 https://github.com/WICG/digital-goods/
❌
DIPS
 Enables the BTM (Bounce Tracking Mitigation) feature.
 On by default to allow for collecting metrics. All potentially dangerous
 behavior (database persistence, storage deletion) will be gated by params.
✅
DIPSTtl
 Flag used to control the TTL for user interactions (separately from the
 |kBtm| feature flag).
✅
DirectOpusAudioDecoding
 Controls whether the OpusAudioDecoder is used for Opus audio decoding
 (instead of the FFmpegAudioDecoder).
✅
DisableArrayBufferSizeLimitsForTesting—❌
DisablePartialStorageCleanupForGPUDiskCache
 When this feature is enabled, partial storage cleanup will be
 disabled for the GPU disk cache. (Performance improvement)
❌
DisableProcessReuse
 When enabled, OOPIFs will not try to reuse compatible processes from
 unrelated tabs.
❌
DisallowMixedOpaqueMediaResponses
 Killswitch for disallowing mixing opaque and non-opaque responses in
 ResourceMultiBufferDataProvider (crbug.com/572363265).
 TODO(crbug.com/572363265): Remove after M158 reaches stable.
✅
DiscardInputEventsToRecentlyMovedFrames—❌
DiscoFeedEndpoint—✅
DisplayWarningDeprecateURNIframesUseFencedFrames
 A console warning is shown when the opaque url returned from Protected
 Audience/selectUrl is used to navigate an iframe. Since fenced frames are not
 going to be enforced for these APIs in the short-medium term, disabling this
 warning for now.
❌
DocumentPictureInPictureAnimateResize
 Adds an animation to document picture-in-picture resizes.
❌
DocumentPictureInPictureCapture
 Allows document picture-in-picture pages to request capture.
✅
DocumentPictureInPictureNavigation
 Allow document picture-in-picture to navigate.  This should be disabled
 except for testing.
❌
DocumentPictureInPictureReparenting—❌
DrawCutoutEdgeToEdge
 Enable drawing under System Bars within DisplayCutout.
✅
EagerStorageAccessPermissionCheck—❌
EmailVerificationProtocol
 Enables the Email Verification Protocol (EVP).
 Note that actual exposure of the EVP API to web content is controlled by the
 flag in RuntimeEnabledFeatures on the blink side. See also the use of
 kSetOnlyIfOverridden in content/child/runtime_features.cc. We enable it here
 by default to support use in origin trials.
✅
EnableCanvas2DLayers
 Enables canvas 2d methods BeginLayer and EndLayer.
❌
EnableDevtoolsDeepLinkViaExtensibilityApi
 Extends console.timestamp to support adding deep-links into the DevTools
 Performance Panel, which (when clicked) call into a DevTools extension.
❌
EnableRtcpReporting
 Controls whether the Mirroring Service will fetch, analyze, and store
 information on the quality of the session using RTCP logs.
✅
EnableTabMuting
 Enables user control over muting tab audio from the tab strip.
❌
EncryptedMediaOcclusionTracking
 Enables tracking the occlusion of HW secure encrypted video elements.
 The HW secure check is OS agnostic, but this switch is currently only
 enabled by default on Windows, and not used for other platforms.
❌
EnforceDedicatedWorkerSameOriginCheck
 Enforce same-origin check for dedicated worker script URLs.
 See https://crbug.com/496253755.
✅
EnforceNoopenerOnBlobURLNavigation
 Prevents an opener from being returned when a BlobURL is cross-site to the
 window's top-level site.
✅
EnforcePdfBlobRestrictions
 Killswitch for restrictions on blob URL creation in PDF processes, in case
 regressions are encountered in the wild. See https://crbug.com/540051167.
✅
EnforceSharedWorkerSameOriginCheck
 Enforce same-origin check for shared worker script URLs.
 See https://crbug.com/504073872.
✅
EnsureExistingRendererAlive
 Ensures the renderer is not dead when getting the process host for a site
 instance.
❌
EventTimingIgnorePresentationTimeFromUnexpectedFrameSource—❌
ExcludeAdsFromOriginIsolation
 When enabled, ads will not be eligible for origin-keyed processes by default.
 Ads can still opt into origin-keyed processes by using the
 Origin-Agent-Cluster: ?1 header.
❌
ExpandCompositedCullRect—✅
ExtendedVideoBitstreamValidation
 Enables extended video bitstream validation for H.264 and H.265.
✅
ExternalClearKeyForTesting
 Enables support for External Clear Key (ECK) key system for testing on
 supported platforms. On platforms that do not support ECK, this feature has
 no effect.
❌
FadeInScrollbarWhenMouseWheelMayBegin
 Fade in scrollbar at may-begin wheel event. This only works on macOS.
❌
FailUrlProvisionFetcherForTesting
 Prevents UrlProvisionFetcher from making a provisioning request. If
 specified, any provisioning request made will not be sent to the provisioning
 server, and the response will indicate a failure to communicate with the
 provisioning server.
❌
FallbackAfterDecodeError
 Falls back to other decoders after audio/video decode error happens. The
 implementation may choose different strategies on when to fallback. See
 DecoderStream for details. When disabled, playback will fail immediately
 after a decode error happens. This can be useful in debugging and testing
 because the behavior is simpler and more predictable.
✅
FeatureManagementLiveTranslateCrOS
 FeatureManagement gate for Live Translate on ChromeOS devices. No impact
 outside of CrOS.
❌
FedCm
 Enables JavaScript API to intermediate federated identity requests.
 Note that actual exposure of the FedCM API to web content is controlled
 by the flag in RuntimeEnabledFeatures on the blink side. See also
 the use of kSetOnlyIfOverridden in content/child/runtime_features.cc.
 We enable it here by default to support use in origin trials.
✅
FedCmActiveModeMultipleIdentityProviders
 Enables Active Mode support with multiple Identity Providers in FedCM.
❌
FedCmAmbientBubble
 Enables showing FedCM accounts for passive mode requests in an ambient
 bubble, instead of the regular FedCM dialog. This is separate from
 kFedCmAmbientUI, which shows FedCM in the omnibox.
❌
FedCmAmbientUI
 Enables the FedCM ambient UI.
❌
FedCmAutofill
 Enables RPs to enhance autofill with federated accounts fetched by the FedCM
 API.
❌
FedCmDelegation
 Enables usage of the FedCM Delegation API.
❌
FedCmEmbedderInitiatedLogin
 Enables FedCM to support login request initiated by the embedder.
✅
FedCmIdentityHandler
 Enables FedCM Identity Handler (Service Worker interception of FedCM
 requests). When enabled, IDPs can declare a Service Worker in their
 .well-known/web-identity file to intercept credentialed FedCM requests
 (accounts, id-assertion, disconnect).
 Explainer: https://github.com/w3c-fedid/identity-handler
 Spec: https://w3c-fedid.github.io/FedCM/
 Design doc:
 https://docs.google.com/document/d/1PgiLzfvE8NsSnxgJYA3WUEld0FguPfPETHDPjUb6wlo/
 Bug: 526074797
❌
FedCmIdPRegistration
 Enables usage of the FedCM IdP Registration API.
❌
FedCmLightweightMode
 Enables Lightweight FedCM Mode
❌
FedCmMetricsEndpoint
 Enables usage of the FedCM API with metrics endpoint at the same time.
❌
FedCmNativeIdPs
 Enables browser to connect FedCM requests to Native Identity Providers.
❌
FedCmNavigationInterception
 Enables usage of the FedCM IdP-Initiation API.
❌
FedCmNonceInParams
 Enables Nonce usage in Params
❌
FedCmWebIdentitySubdomain
 Enables subdomain-first discovery for the FedCM well-known file. Fetches
 https://web-identity.well-known.&lt;eTLD+1&gt;/.well-known/web-identity first and
 falls back to the apex URL on failure (network error, malformed JSON, or
 provider_urls length > 1).
❌
FedCmWellKnownEndpointValidation
 Controls whether FedCM requires explicit endpoint declaration in well-known
 files when client_metadata is used. When enabled, accounts_endpoint and
 login_url must be present in .well-known/web-identity for privacy validation.
❌
FedCmWithoutWellKnownEnforcement
 Enables bypassing the well-known file enforcement.
❌
FeedAudioOverviews—❌
FeedContainment—✅
FeedImageMemoryCacheSizePercentage—❌
FeedLoadingPlaceholder—❌
FeedNoViewCache—✅
FeedNullItemAnimatorOnScrollRestore
 TODO(b/517926260): Remove this feature flag once the change has made it
 through a stable channel revision.
 See b/517926260.
❌
FeedPerformanceStudy—❌
FeedRecyclerBinderUnmountOnDetach—❌
FeedSignedOutViewDemotion—❌
FeedStreaming—❌
FeedSyntheticCapabilities—❌
FencedFrames
 Enable the <fencedframe> element; see crbug.com/1123606. Note that enabling
 this feature does not automatically expose this element to the web, it only
 allows the element to be enabled by the runtime enabled feature, for origin
 trials.
✅
FencedFramesAutomaticBeaconCredentials
 Temporarily un-disable credentials on fenced frame automatic beacons until
 third party cookie deprecation.
 TODO(crbug.com/1496395): Remove this after 3PCD.
✅
FencedFramesCrossOriginAutomaticBeaconData—✅
FencedFramesCrossOriginEventReporting
 Enable sending event-level reports through reportEvent() in cross-origin
 subframes. This requires opt-in both from the cross-origin subframe that is
 sending the beacon as well as the document that contains information about
 the reportEvent() endpoints.
✅
FencedFramesEnforceFocus
 Enables browser-side focus verification when crossing fenced boundaries.
❌
FencedFramesLocalUnpartitionedDataAccess
 Controls functionality related to network revocation/local unpartitioned
 data access in fenced frames.
❌
FencedFramesReportEventHeaderChanges—✅
FencedFramesSrcPermissionsPolicy
 Enables a bug fix that allows a 'src' allowlist in the |allow| parameter of a
 <fencedframe> or <iframe> loaded with a FencedFrameConfig to behave as
 expected. See: https://crbug.com/349080952
✅
FetchErrorCategoryLogging
 Controls whether category-keyed UKM (FetchRequest.WithCategory) is logged
 when a fetch() request reaches a terminal state.
✅
FFmpegDemuxerIT35MetadataTrack
 Controls whether FFmpegDemuxer attaches the HDR metadata carried by ITU-T
 T.35 timed metadata tracks to the video tracks that reference them.
✅
FieldClassificationModelCaching
 When enabled, the field classification model uses runtime caching to not run
 models on the same inputs multiple times.
 TODO(crbug.com/371933424). Clean up when launched, if not used for Autofill
 experiments.
❌
FileChooserMinWindowSize
 Enforces a minimum top-level window size for file chooser dialogs to mitigate
 UI occlusion spoofing (see crbug.com/479258455).
✅
FileDialogsBlockPictureInPicture
 Blocks picture-in-picture windows while file dialogs are open.
❌
FileDialogsTuckPictureInPicture
 Tucks picture-in-picture windows while file dialogs are open.
❌
FileSystemUrlNavigation—❌
FilteringScrollPrediction—❌
FlushGpuChannelOnLayerTreeViewRelease—✅
FontAccessCheckFrameIsActive—✅
ForceHighPerformanceGPUForWebGL—❌
ForceProduceCompileHints—❌
ForceSoftwareForRtcLowResolutions
 Forces software video encoders to be used for low resolutions.
 Enabled-by-default, except for Android where SW encoder for H26x and AV1 are
 (sometimes) not available.
 TODO: crbug.com/40068556 - Enable for Android and remove this flag.
✅
ForwardMemoryPressureToBlinkIsolates
 Whether a memory pressure signal in a renderer should be forwarded to Blink
 isolates. Forwarding the signal triggers a GC (critical) or starts
 incremental marking (moderate), see v8::Heap::CheckMemoryPressure.
✅
FrameMetadataObserver—✅
FreezeSharedWorker—✅
FrequencyCappingForOverlayPopupDetection
 Enables the frequency capping for detecting overlay popups. Overlay-popups
 are the interstitials that pop up and block the main content of the page.
✅
GetDisplayMediaConfersActivation
 When getDisplayMedia() is invoked, the user sees and interacts with
 a Chromium prompt through which they choose which tab/window/screen
 to share. If this flag is enabled, then when the user chooses to
 share, transient activation is conferred on the capturing Web application.

 TODO(crbug.com/420406085): Remove after January 2028.
 Keep this flag around at least until that date.
✅
GlicActorAutofill
 The feature will be tested and rolled out independently on iOS.
❌
GlobalMediaControlsAutoDismiss
 Auto-dismiss global media controls.
✅
GlobalMediaControlsSaveVideoFrame
 Enables the "Save Video Frame" button in Global Media Controls.
✅
GlobalMediaControlsSeamlessTransfer
 Enable selection of audio output device in Global Media Controls.
❌
GlobalPrivacyControlAlwaysSample—❌
GlobalVaapiLock
 Enable global VA-API lock. Disable this to use lock-free VA-API function
 calls for thread safe backends.
❌
GMSCoreEmoji—✅
GuestViewMPArch
 Whether GuestViews (see components/guest_view/README.md) are implemented
 using MPArch inner pages. See https://crbug.com/40202416
❌
H264IDRKeyframeRequiresParameterSets
 When enabled, H.264 keyframe detection becomes stricter for samples whose avc
 config does not provide SPS/PPS. In that case, an IDR alone is not
 sufficient, SPS+PPS must appear in-band to mark it as a keyframe.
❌
H264SkipUnspecifiedNalus
 Skips H.264 NAL units with the unspecified nal_unit_type 31 during Annex B
 conversion, to work around platform decoders that fail on them.
 TODO(b/567236166): Remove once the cros-codecs fix has rolled out.
❌
HardenUrlProvisionFetcher
 When enabled, URLProvisionFetcher is hardened against SSRF and OOM by
 restricting requests and redirects to HTTPS POST, and enforcing a maximum
 response size.
❌
HardwareMediaKeyHandling
 Enables handling of hardware media keys for controlling media.
❌
HardwareSecureDecryption
 Enables hardware secure decryption if supported by hardware and CDM.
 NOTE: For Windows platform, hardware secure decryption is available via
 PlayReady SL3000.
 TODO(xhwang): Currently this is only used for development of new features.
 Apply this to Android and ChromeOS as well where hardware secure decryption
 is already available.
✅
HardwareSecureDecryptionAv1
 Enables hardware secure AV1 decoding if supported by the hardware
 and the OS Content Decryption Module (CDM).
✅
HardwareSecureDecryptionFallback
 Allows automatically disabling hardware secure Content Decryption Module
 (CDM) after failures or crashes to fallback to software secure CDMs. If this
 feature is disabled, the fallback will never happen and users could be stuck
 in playback failures.
✅
HardwareSecureDecryptionVp9
 Enables hardware secure VP9 decoding if supported by the hardware
 and the OS Content Decryption Module (CDM).
❌
HeadlessCaptionEarlyStart
 If enabled, Glic will start captioning as soon as a profile is loaded.
❌
HeadlessLiveCaption
 Controls headless Live Caption experiment, which is likely unstable.
❌
HeapVectorPromptlyFree—✅
HeavyAdIntervention
 Enables or disables the intervention that unloads ad iframes with intensive
 resource usage.
✅
HeavyAdInterventionSendReportToEmbedder
 Enables or disables sending the heavy ad report to the root ad frame's
 embedder.
✅
HeavyAdInterventionWarning
 Enables or disables reporting on the intervention that unloads ad iframes
 with intensive resource usage.
✅
HeavyAdPrivacyMitigations
 Enables or disables the privacy mitigations for the heavy ad intervention.
 This throttles the amount of interventions that can occur on a given host in
 a time period. It also adds noise to the thresholds used. This is separate
 from the intervention feature so it does not interfere with field trial
 activation, as this blocklist is created for every user, and noise is decided
 prior to seeing a heavy ad.
✅
HttpDiskCachePrewarming—❌
IDBDatabaseExternalMemoryAccounting—❌
IdbSqliteBackingStore
 This flag unconditionally enables the SQLite backing store. Used for
 about:flags.
❌
IdbSqliteOnDiskRollout—❌
IgnoreDuplicateNavs
 Controls whether we ignore duplicate navigations or not, in favor of
 preserving the already ongoing navigation.
✅
ImageLoadingPrioritizationFix—✅
ImageReplacement—❌
IndexedDBCompressValuesWithSnappy—✅
IndexedDBConnectionDeduplication—❌
InitialWebUI
 Enables rendering the top chrome in WebUI. This is a central flag to enable
 the WebUI implementation of top chrome. Individual features will be
 additionally gated by this flag.
❌
InitialWebUISurfaceSync—❌
InitialWebUIWithoutExtensions—❌
InlineScriptCache—❌
InputCursorAnchorInfoMigration
 Gating the migration of Android IME cursor anchor updates from Mojo IPC to
 RenderFrameMetadata.
✅
InputPredictorTypeChoice—❌
InstalledApp
 Kill switch for the GetInstalledRelatedApps API.
✅
InstalledAppProvider
 Allow Windows specific implementation for the GetInstalledRelatedApps API.
✅
IntensiveWakeUpThrottling
 When enabled, wake ups from throttleable TaskQueues are limited to 1 per
 minute in a page that has been backgrounded for 5 minutes.

 Intensive wake up throttling is enforced in addition to other throttling
 mechanisms:
  - 1 wake up per second in a background page or hidden cross-origin frame
  - 1% CPU time in a page that has been backgrounded for 10 seconds

 Feature tracking bug: https://crbug.com/1075553

 The base::Feature should not be read from; rather the provided accessors
 should be used, which also take into account the managed policy override of
 the feature.

 The base::Feature is enabled by default on all platforms. However, on
 Android, it has no effect because page freezing kicks in at the same time. It
 would have an effect if the grace period ("grace_period_seconds" param) was
 reduced.
✅
InteractiveDetectorIgnoreFcp—❌
InterestFeedV2
 InterestFeedV2 takes precedence over InterestFeedContentSuggestions.
 InterestFeedV2 is cached in ChromeCachedFlags. If the default value here is
 changed, please update the cached one's default value in CachedFeatureFlags.
✅
InternalMediaSession
 Enables the internal Media Session logic without enabling the Media Session
 service.
❌
IOThreadInteractiveThreadType
 Sets IO threads to kInteractive all the time.
❌
IsolatedWebApps
 Enable support for isolated web apps. This will guard features like serving
 isolated web apps via the isolated-app:// scheme, and other advanced isolated
 app functionality. See https://github.com/reillyeon/isolated-web-apps for a
 general overview.
 Please don't use this feature flag directly to guard the IWA code.  Use
 IsolatedWebAppsPolicy::AreIsolatedWebAppsEnabled() in the browser process or
 check kEnableIsolatedWebAppsInRenderer command line flag in the renderer
 process.
❌
IsolatedWorldEventSourceAndBeaconsSkipServiceWorker—✅
IsolateFencedFrames
 Enables process isolation of fenced content (content inside fenced frames)
 from non-fenced content. See
 https://github.com/WICG/fenced-frame/blob/master/explainer/process_isolation.md
 for rationale and more details.
❌
IsolateOrigins
 Alternative to switches::kIsolateOrigins, for turning on origin isolation.
 List of origins to isolate has to be specified via
 kIsolateOriginsFieldTrialParamName.
❌
IsolateSandboxedIframes
 Allow process isolation of iframes with the 'sandbox' attribute set. Whether
 or not such an iframe will be isolated may depend on options specified with
 the attribute. Note: At present, only iframes with origin-restricted
 sandboxes are isolated.
✅
IsolatesPriorityBestEffortWhenHidden
 When enabled, forces the priority of isolates in hidden renderers to
 best-effort, overriding the effect of kIsolatesPriorityUseProcessPriority
 (isolates in visible renderer will still get their priority derived from
 process priority).
❌
IsolatesPriorityUseProcessPriority
 When enabled, derives isolate priority from the more granular process
 priority (user-blocking, user-visible, best-effort) instead of renderer
 visibility (visible, hidden).

 Subtlety: A renderer hosting a hidden frame playing audio will have
 user-blocking priority. Without this feature, an isolate in this renderer
 would have best-effort priority (derived from the visibility), whereas with
 the feature it would be user-blocking. To keep isolates in hidden renderers
 at best-effort priority, but otherwise use the process priority, enable this
 feature along with "IsolatesPriorityBestEffortWhenHidden".
❌
IsolateSubframeErrorPages
 Enables process isolation for subframe error pages. See
 https://crbug.com/40134629.
 TODO(crbug.com/40134629): Enable by default on Android as well.
✅
JointMediaOptimizer
 Enable the prototype global optimization of tuneables via finch.  See
 media/base/tuneable.h for how to create tuneable parameters.
❌
KeepAliveInBrowserMigration—✅
KeepAliveReportBlockedByClient
 Kill-switch for the tracking of keep-alive requests blocked by client.
✅
kEmulateLoadStartedForInspectorOncePerResource
 If enabled, the body of EmulateLoadStartedForInspector is executed only
 once per Resource per ResourceFetcher, and thus duplicated network load
 entries in DevTools caused by EmulateLoadStartedForInspector are removed.
 https://crbug.com/1502591
✅
kFetchDestinationJsonCssModules
 Use "style" and "json" destinations for CSS and JSON modules.
 https://crbug.com/1491336
✅
kLogSodaLoadFailures
 Logs a DumpWithoutCrashing() call each time the Speech On-Device API (SODA)
 fails to load. Used to diagnose issues when rolling out new versions of the
 SODA library.
❌
LazyBrowserInterfaceBroker
 When enabled, creation of the BrowserInterfaceBroker on RenderFrameHostImpls
 becomes lazy. i.e. the BrowserInterfaceBroker is constructed only when it is
 needed, typically when a renderer process becomes associated with the frame.
 See https://crbug.com/450912216 for more details.
✅
LCPCriticalPathPredictor—❌
LCPPAutoPreconnectLcpOrigin—❌
LCPPDeferUnusedPreload—❌
LCPPFontURLPredictor—❌
LCPPInitiatorOrigin—✅
LCPPLazyLoadImagePreload—✅
LCPPMultipleKey—✅
LCPPPrefetchSubresource—❌
LCPPPrefetchSubresourceAsync—❌
LCPScriptObserver—❌
LCPTimingPredictorPrerender2—❌
LeftHandSideActivityIndicators—✅
LeftHandSideSensorActivityIndicators—❌
LegacyParsingOfXContentTypeOptions—❌
LessAggressiveParkableString
 Enables more conservative settings for ParkableString: suspend parking in
 foreground, and increase aging tick intervals.
✅
LightweightNoStatePrefetch
 A feature to reduce the set of resources fetched by No-State Prefetch.
❌
LimitLayerMergeDistance—✅
LiveCaption
 Enables the Live Caption feature on supported devices.
✅
LiveCaptionAutomaticLanguageDownload
 Enable automatic downloading of speech recognition language packs.
❌
LiveCaptionExperimentalLanguages
 Enable experimental Live Caption languages.
❌
LiveCaptionLogFlickerRate
 Log the amount of flickering between partial results. This measures how often
 the system revises earlier outputs, to quantify the system's output
 instability or flicker. Intuitively, it measures how many tokens must be
 truncated from the previous text before appending any new text. The erasure
 of the current timestep can be calculated from its longest common prefix with
 the previous timestep.
❌
LiveCaptionRightClick
 Enable or disable Live Caption from the right click menu.
❌
LiveCaptionSpeechRecognitionSmallExpertModel
 Enable speech recognition model LLM integration for Live Caption.
❌
LiveCaptionUseGreedyTextStabilizer
 Use a greedy text stabilizer to reduce flickering when translating partial
 speech recognition results.
✅
LiveCaptionUseWaitK
 Use a wait-k approach to reduce flickering when translating partial speech
 recognition results.
❌
LiveCaptionWebAudio
 Enable or disable Live Caption support for WebAudio.
✅
LoadingPredictorLimitPreconnectSocketCount
 If this is enabled, LoadingPredictor restricts the number of preconnects for
 the same destination to one.
❌
LoadingTasksUnfreezable
 Makes network loading tasks unfreezable so that they can be processed while
 the page is frozen.
✅
LocalCompileHints—✅
LogJsConsoleMessages—✅
LogUnexpectedIPCPostedToBackForwardCachedDocuments—✅
LowerHighResolutionTimerThreshold—❌
LowPriorityAsyncScriptExecution—✅
ManageContactInfoPerceptionSurvey
 When enabled, a HaTS survey is shown after the user visited "Contact info"
 settings page.
❌
ManageIdentityDocsPerceptionSurvey
 When enabled, a HaTS survey is shown after the user visited "Identity docs"
 settings page.
❌
ManagePasswordsPerceptionSurvey
 When enabled, a HaTS survey is shown after the user visited Password Manager
 management surface.
❌
ManagePaymentsPerceptionSurvey
 When enabled, a HaTS survey is shown after the user visited "Payments"
 settings page.
❌
ManageTravelPerceptionSurvey
 When enabled, a HaTS survey is shown after the user visited "Travel"
 settings page.
❌
ManageYourSavedInfoPerceptionSurvey
 When enabled, a HaTS survey is shown after the user visited "Your saved info"
 settings page.
❌
MatchSourceAudioChannelLayout
 Allows Chrome to reconfigure the sink to match the channel count of the
 source audio data. This ensures opening of an audio output stream to match
 the source audio data channels, to signal to the downstream audio
 subsystem that the audio must be processed according to the source audio
 channel count.
 TODO(crbug.com/445215599): This should be replaced with a MediaClient
 mechanism if it works as intended.
❌
MBIMode
 The MBI mode controls whether or not communication over the
 AgentSchedulingGroup is ordered with respect to the render-process-global
 legacy IPC channel, as well as the granularity of AgentSchedulingGroup
 creation. This will break ordering guarantees between different agent
 scheduling groups (ordering withing a group is still preserved).
 DO NOT USE! The feature is not yet fully implemented. See crbug.com/1111231.
❌
MediaCapabilitiesQueryGpuFactories
 When enabled, MediaCapabilities will check with GPU Video Accelerator
 Factories to determine isPowerEfficient = true/false.
✅
MediaCapabilitiesWithParameters
 Enable Media Capabilities with finch-parameters.
✅
MediaEngagementBypassAutoplayPolicies
 The following Media Engagement flags are not enabled on mobile platforms:
 - MediaEngagementBypassAutoplayPolicies: enables the Media Engagement Index
   data to be esude to override autoplay policies. An origin with a high MEI
   will be allowed to autoplay.
 - PreloadMediaEngagementData: enables a list of origins to be considered as
   having a high MEI until there is enough local data to determine the user's
   preferred behaviour.
✅
MediaEngagementHTTPSOnly—❌
MediaLinkHelpers
 Allows per-site special processing for media links.
✅
MediaLogToConsole
 Enables sending MediaLog to the log stream, which is useful for easier
 development by ensuring logs can be seen without a remote desktop session.
 Only affects builds when DCHECK is on for non-ERROR logs (ERROR logs are
 always sent to the log stream). Enabled by default on Android and ChromeOS.
❌
MediaPowerExperiment
 Enable aggregate power measurement for media playback.
❌
MediaRemotingWithoutFullscreen
 If enabled, users can request Media Remoting without fullscreen-in-tab.
❌
MediaSourceSeiRecoveryPointKeyframe—✅
MediaTrasncriptsFlagInPageMetadata
 If enabled, chrome would inform Glic once it starts transcribing, if Glic
 requested to be informed.
❌
MemoryCacheIntelligentPruning—❌
MemoryCacheStrongReference—✅
MemoryCacheStrongReferenceExtensions—❌
MemoryPurgeOnFreeze—❌
MemoryPurgeOnFreezeLimit—❌
MemorySaverModeRenderTuning—❌
MHTML_Improvements—❌
MoveResizeWindowToIPCs—✅
MP4TimedMetadataTrack—✅
NavigationConfidenceEpsilon
 Controls the configurablity of the navigation confidence noise level.
 If the feature is not enabled, then the epsilon value will be 1.1.
❌
NavigationNetworkResponseQueue
 When NavigationNetworkResponseQueue is enabled, the browser will schedule
 some tasks related to navigation network responses in a kHigh priority
 queue.
✅
NavigationPredictor
 Used to control the collection of anchor element metrics (crbug.com/856683).
 If kNavigationPredictor is enabled, then metrics of anchor elements
 in the first viewport after the page load and the metrics of the clicked
 anchor element will be extracted and recorded.
 Note that the desktop roll out is being done separately from android. See
 https://crbug.com/40258405
✅
NavigationPredictorNewViewportFeatures
 Used to control the collection of new viewport related anchor element
 metrics. Metrics will not be recorded if either this or kNavigationPredictor
 is disabled.
❌
NetworkQualityEstimatorWebHoldback
 Puts network quality estimate related Web APIs in the holdback mode. When the
 holdback is enabled the related Web APIs return network quality estimate
 set by the experiment (regardless of the actual quality).
❌
NetworkServiceInProcess2
 If the network service is enabled, runs it in process.
❌
NoForcedFrameUpdatesForWebTests—❌
NoReferrerForPreloadFromSubresource—✅
NoSelectionMenuCaching
 Feature which disables caching a previous selection menu object.
❌
NoStatePrefetchHoldback
 Feature which holdbacks NoStatePrefetch on all surfaces.
❌
NoThrottlingVisibleAgent—❌
NoThrowForCSPBlockedWorker—✅
OffscreenCanvasPropagateVisibility—❌
OffscreenCanvasSyncAnimationState—✅
OnDeviceWebSpeech
 Enables the On-Device Web Speech feature on supported devices.
✅
OnDeviceWebSpeechGeminiNano
 Enables on-device speech recognition using on-device Gemini Nano.
❌
OnDeviceWebSpeechRequiresStickyActivation
 Kill switch for requiring sticky activation in SpeechRecognition.install()
 for relaxed model downloads. See https://crbug.com/559063678.
✅
OnDeviceWebSpeechSmallExpertModel
 Enables on-device speech recognition using on-device TinyGemma.
❌
OnDeviceWebSpeechSmallExpertModelMultiLanguage
 Enables multi-language support for on-device speech recognition using
 on-device TinyGemma.
✅
OpenAllUrlsOrFilesOnDrop—✅
OptimizeHTMLElementUrls—✅
OptimizeMixedContentChecks
 When enabled, fast-exits the mixed-content checks for secure URLs.
✅
OptimizeWebRequestProxyForServiceWorkerAutoPreload
 Improve ServiceWorkerAutoPreload coverage by using more accurate web request
 proxy detection.

 If enabled, ServiceWorkerAutoPreload will not start if any installed
 extension has the webRequest or declarativeNetRequest permission, or if
 the request is initiated by <webview>.

 If not enabled, ServiceWorkerAutoPreload will not start if any installed
 extension has the webRequest, declarativeNetRequest, or webview
 permission. On Desktop platforms, there are often default extensions with the
 webview permission, meaning ServiceWorkerAutoPreload is almost always not
 enabled.
❌
OriginAgentClusterDefaultEnable—✅
OriginIsolationHeader
 Controls the Origin-Agent-Cluster header. Tracking bug
 https://crbug.com/1042415; flag removal bug (for when this is fully launched)
 https://crbug.com/1148057.

 The name is "OriginIsolationHeader" because that was the old name when the
 feature was under development.
✅
OriginKeyedProcessesByDefault
 Enables origin-keyed processes by default, unless origins opt out using
 Origin-Agent-Cluster: ?0. This feature only takes effect if the Blink feature
 OriginAgentClusterDefaultEnable is enabled, since origin-keyed processes
 require origin-agent-clusters.
❌
overlay-fullscreen-video
 Only used for disabling overlay fullscreen (aka SurfaceView) in Clank.
✅
OverrideCrashReportingEndpoint—✅
OverscrollHistoryNavigation
 History navigation in response to horizontal overscroll (aka gesture-nav).
✅
PaintHolding
 Enable defer commits to avoid flash of unstyled content, for all navigations.
✅
PaintTimingIngnoreOutOfLifecyclePaints—✅
ParseSEIRecoveryPoints
 Causes the AVC parser to additionally parse and indicate when an SEI
 recovery point with recovery_frame_cnt=0 has been found.
✅
Path2DPaintCache
 Enables the use of the PaintCache for Path2D objects that are rasterized
 out of process.  Has no effect when kCanvasOopRasterization is disabled.
❌
PauseMutedBackgroundAudio—❌
PausePagesPerBrowsingContextGroup—❌
PeriodicBackgroundSync
 Whether web apps can run periodic tasks upon network connectivity.
❌
PersonalizeFeedUnsignedUsers—❌
PictureInPictureMuteControl
 Adds a mute/unmute button to the Video Picture-in-Picture overlay window.
✅
PictureInPictureOcclusionTracking
 Enables tracking the position of picture-in-picture windows to know when they
 occlude certain widgets.
✅
PlatformAudioEncoder
 Allows usage of OS-level (platform) audio encoders.
❌
PrecompileInlineScripts—❌
PreconnectManagerDirectFastPath
 If enabled, PreconnectManager bypasses UI-thread host preresolve and connects
 sockets directly to the network context for single preconnect requests.
❌
PreemptiveSodaDownload
 Enables the preemptive downloading of the SODA binary and language
 packs.
❌
PreferCompositingToLCDText
 Whether we should composite a PLSA (paint layer scrollable area) even if it
 means losing lcd text.
❌
PrefetchActivationBeacon
 If enabled, activation beacon is sent when a prefetched page is activated.
 The activation beacon is a beacon that echoes back a server specified token
 to the server when a prefetched page is activated.
❌
PrefetchAheadOfImminentNavigation
 Controls the behavior of a prefetch ahead of an imminent navigation, i.e. a
 prefetch triggered by a signal that the navigation is (almost) certain to
 happen soon. See PrefetchRequest::is_ahead_of_imminent_navigation().
❌
PrefetchOffTheMainThread
 Allow starting prefetch request from off the main thread. Please see
 crbug.com/452389538 for more details.
❌
PrefetchPrerenderIntegration
 Use code paths for prefetch/prerender integration.
 See also kPrerender2FallbackPrefetchSpecRules.
✅
PrefetchProxy
 If explicitly disabled, prefetch proxy is not used.
✅
PrefetchRequestStatusListenerAsync
 Make PrefetchRequestStatusListener notifications async.
 https://crbug.com/496807663
✅
PrefetchUseContentRefactor
 This feature was used to launch the prefetch migration from embedder layer to
 content/, and this work has finished and the old implementation was deleted.
 Now this flag is just for injecting parameters through field trials as an
 umbrella feature.
✅
PreloadingEagerHoverHeuristics
 Launch mouse hover feature only on Desktop. Note that Android Desktop mode is
 currently out of scope.
❌
PreloadingEagerViewportHeuristics—✅
PreloadingEligibilityCheckOnRenderer—❌
PreloadingModerateViewportHeuristics—✅
PreloadingRespectUserAgentOverride
 Killswitch for UA override issue fix (crbug.com/441612842) in preloading.
❌
PreloadMediaEngagementData—✅
PreloadSystemFonts—❌
Prerender2EarlyDocumentLifecycleUpdate—❌
Prerender2FallbackPrefetchSpecRules
 Triggers prefetch ahead of prerender for Speculation Rules.
 See https://crbug.com/342089123 for more details.

 Enabled except for Android WebView.
✅
Prerender2MemoryControls—✅
Prerender2ReuseHost
 If enabled, the feature allows the prerender host to be reused for the
 future same-site page prerender if marked as reusable.
✅
PrerenderActivationBeacon
 If enabled, activation beacon is sent when a prerendered page is activated.
 The activation beacon is a beacon that echoes back a server specified token
 to the server when a prerendered page is activated.
❌
PreviewHandwritingGesture
 If enabled, the feature allows user to see a preview of their handwriting
 gestures (Select and Delete gestures).
❌
PrioritizeMainFrameNavigationNetworkResponse
 When PrioritizeMainFrameNavigationNetworkResponse is enabled, the browser
 will schedule tasks related to primary main frame navigation network
 responses in a kHighest priority queue.
❌
PrivacySandboxAdsAPIsOverride
 Enables exposure of ads APIs in the renderer: Attribution Reporting,
 FLEDGE, Topics, along with a number of other features actively in development
 within these APIs.
❌
ProcessHtmlDataImmediately—❌
ProcessPerSiteUpToMainFrameThreshold
 Reuses RenderProcessHost up to a certain threshold. This mode ignores the
 soft process limit and behaves just like a process-per-site policy for all
 sites, with an additional restriction that a process may only be reused while
 the number of main frames in that process stays below a threshold.
✅
ProcessSelectionDeferringConditions
 When enabled, ProcessSelectionDeferringConditions will be run. This allows
 the embedder to provide conditions that may delay the final process selection
 until the conditions have their results.
✅
PushSubscriptionChangeEventOnInvalidation
 Fires the pushsubscriptionchange event defined here:
 https://w3c.github.io/push-api/#the-pushsubscriptionchange-event
 for subscription refreshes, revoked permissions or subscription losses
❌
PushSubscriptionChangeEventOnResubscribe
 Fires the pushsubscriptionchange event defined here:
 https://w3c.github.io/push-api/#the-pushsubscriptionchange-event
 upon manual resubscription to previously unsubscribed notifications.
✅
PwaNavigationCapturing—✅
RecordMediaEngagementScores
 Enables Media Engagement Index recording. This data will be used to determine
 when to bypass autoplay policies. This is recorded on all platforms.
✅
RecordWebAudioEngagement
 Enables Media Engagement Index recording for Web Audio playbacks.
✅
ReducedReferrerGranularity
 Reduce the amount of information in the default 'referer' header for
 cross-origin requests.
✅
ReduceSubresourceResponseStartedIPC
 When enabled, sends SubresourceResponseStarted IPC only when the user has
 allowed any HTTPS-related warning exceptions. From field data, ~100% of
 subresource notifications are not required, since allowing certificate
 exceptions by users is a rare event. Hence, if user has never allowed any
 certificate or HTTP exceptions, notifications are not sent to the browser.
 Once we start sending these messages, we keep sending them until all
 exceptions are revoked and browser restart occurs.
❌
RefreshFeedOnRestart—❌
RegionCaptureOfClonedTracks
 When disabled, cropTo() is rejected while other tracks share the source, as
 it was before per-track cropping was supported.
✅
ReleaseResourceDecodedDataOnMemoryPressure
 Whether blink::Resource deletes its decoded data on memory pressure.
✅
ReleaseResourceStrongReferencesOnMemoryPressure
 Whether blink::MemoryCache and blink::ResourceFetcher release their
 strong references to resources on memory pressure.
✅
RemoveCommitRedirectUrlsArray
 Flag guard for removing usage of the CommitNavigationParams.redirects
 array of URLs in the renderer process.
✅
RenderDocument
 Enable using the RenderDocument.
✅
RendererMainIsNormalThreadTypeForWebRTC—✅
RenderMutedAudio
 Controls whether muted media stream audio should continue to render.
✅
RenderSizeInScoreAdBrowserSignals—✅
RequiresLoadIgnoreLimitsForDomWindowsOnly—❌
ResampleScrollEventsForFling—❌
ResamplingInputEvents—❌
ResamplingScrollEvents—✅
ResetNativePointerInCreditCardAuthDialog
 If enabled, the AuthenticatorSelectionDialogBridge will reset the native
 pointer when the dialog is dismissed.
✅
ResolutionBasedDecoderPriority
 Enables a platform-specific resolution cutoff for prioritizing platform
 decoders over software decoders or vice-versa.

 Note: This feature is used by ChromeOS tests and shouldn't be removed even
 though it has long been enabled by default.
✅
ResourceBroker
 Master flag for the Resource Broker metrics-only skeleton, which observes
 eligible subresource responses to measure cross-renderer duplication of
 identical bytes. No serving behavior exists behind this flag.

 Policy: serving requires a future separate default-off feature; a
 configuration that appears to request serving degrades to metrics-only with
 a warning + UMA, never a browser-process CHECK.

 Tracking bug: crbug.com/560232768
❌
RestrictBackgroundFetchFromServiceWorker—✅
RestrictLinkHeaderOnSubresource—✅
RestrictThreadPoolInBackground
 Restrict the maximum number of concurrent ThreadPool tasks when a renderer is
 low priority.
❌
resume-background-video
 Let videos be resumed via remote controls (for example, the notification)
 when in background.
❌
ReuseNoStoreImageOnSameSrcReassignment
 Allows same-document available-image reuse for no-store images.
✅
RevokeMediaSourceObjectURLOnAttach
 Approach original pre-REC MSE object URL autorevoking behavior, though await
 actual attempt to use the object URL for attachment to perform revocation.
 This will hopefully reduce runtime memory bloat for pages that do not
 explicitly detach their HTMLME+MSE object collections nor explicitly revoke
 the object URLs used to attach HTMLME+MSE. When disabled, revocation only
 occurs when application explicitly revokes the object URL, or upon the
 execution context teardown for the MediaSource object. When enabled,
 revocation occurs upon successful start of attachment of HTMLME to the object
 URL. Note, rather than immediately scheduling a task to revoke upon the URL's
 creation, as at least one other browser does and the original File API
 pattern used to follow, this delay until attachment start enables new
 scenarios that could use the object URL for attaching HTMLME+MSE cross-thread
 (MSE-in-workers), where there could be significant delay between the worker
 thread creation of the object URL and the main thread usage of the object URL
 for starting attachment to HTMLME.
✅
RunVideoCaptureServiceInBrowserProcess
 Run video capture service in the Browser process as opposed to a dedicated
 utility process.
❌
RustyIcoFeature—❌
SafelistPaytoToRegisterProtocolHandler
 https://html.spec.whatwg.org/multipage/system-state.html#safelisted-scheme
❌
SafetyCheckUnusedSitePermissions
 Enables unused site permission module in Safety Check.
✅
SchedQoSOnResourcedForChrome
 Update scheduler settings using resourced on ChromeOS.
❌
ScriptStreaming
 Controls script streaming for http and https scripts.
✅
ScriptStreamingForNonHTTP
 Enables script streaming for non-http scripts.
✅
ScrollPredictorFilteringBypassOnSynthetic—❌
ScrollPredictorRefinedHasPrediction—❌
ScrollPredictorSyntheticKalman—❌
SecPurposePrefetchHeaderNoStatePrefetch
 Enables sending Sec-Purpose: "prefetch" header for
 NoStatePrefetchURLLoaderThrottle.
✅
SecPurposePrefetchHeaderRelPrefetch
 Enables sending Sec-Purpose: "prefetch" header for rel="prefetch".
✅
SecurePaymentConfirmationBrowser
 Browser-side feature flag for Secure Payment Confirmation (SPC) that also
 controls the render side feature state. SPC is not currently available on
 Linux or ChromeOS, as it requires platform authenticator support.
❌
SecurePaymentConfirmationDebug
 Used to control whether to remove the restriction that PaymentCredential in
 WebAuthn and secure payment confirmation method in PaymentRequest API must
 use a user verifying platform authenticator. When enabled, this allows using
 such devices as UbiKey on Linux, which can make development easier.
❌
SendCnameAliasesToSubresourceFilterFromRenderer
 When enabled, the SubresourceFilter receives calls from the ResourceLoader
 to perform additional checks against any aliases found from DNS CNAME records
 for the requested URL.
❌
ServiceWorkerAutoPreload
 Enables auto preloading for fetch requests before invoking the fetch handler
 in ServiceWorker. The fetch request inside the fetch handler is resolved with
 this preload response. If the fetch handler result is fallback, uses this
 preload request as a fallback network request.

 Unlike navigation preload, this preloading is applied to subresources. Also,
 it doesn't require a developer opt-in.

 crbug.com/1472634 for more details.
✅
ServiceWorkerBackgroundUpdateForRegisteredStorageKeys
 If enabled, UI thread tasks can check ServiceWorker registration information
 from the thread pool without waiting for running the receiving task. Please
 see crbug.com/421530699 for more details.
✅
ServiceWorkerDatabaseDoomOnMissingNextId
 (crbug.com/539155958): When enabled, ServiceWorkerDatabase treats missing
 next available ID metadata as database corruption if registrations exist on
 disk, triggering database doom and clean recovery.
❌
ServiceWorkerInterceptDownloads
 crbug.com/40410035: When enabled, download requests ("Save link as",
 "Save image as", <a download>) are intercepted by service workers, allowing
 the service worker's fetch event handler to provide a response.
❌
ServiceWorkerPaymentApps
 Service worker based payment apps as defined by w3c here:
 https://w3c.github.io/webpayments-payment-apps-api/
 TODO(rouslan): Remove this.
✅
ServiceWorkerRaceNetworkRequestFallbackOnDisconnect
 Enables fallback to network request when the RaceNetworkRequest Mojo pipe is
 disconnected.
❌
ServiceWorkerSyntheticResponse
 (crbug.com/352578800): Enables building a sysnthetic response by
 ServiceWorker. For navigation requests, the pre-learned static response
 header is returned in parallel with dispatching the network request.
❌
SetIntervalWithoutClamp
 If enabled, calling setInterval(..., 0) will not clamp to 1ms.
 Tracking bug: https://crbug.com/402694.
✅
SetSelectionForAccessibilityHandlingInputEvent—✅
SharedArrayBuffer
 http://tc39.github.io/ecmascript_sharedmem/shmem.html
 This feature is also enabled independently of this flag for cross-origin
 isolated renderers.
❌
SharedStorageAPIEnableWALForDatabase—✅
SharedStorageCreateWorkletCustomDataOrigin—✅
SharedStorageSelectURLSavedQueries—✅
SharedStorageWorkletSharedBackingThreadImplementation—❌
ShowAutocompleteAtMemoryButton
 If enabled, an entry point to AtMemory will be shown at the bottom of the
 Autocomplete dialogs.
❌
ShowHudDisplayForPausedPages—✅
SiteInstanceGroupsForDataUrls
 When enabled, puts subframe data: URLs in a separate SiteInstance in the same
 SiteInstanceGroup as the initiator.
✅
SiteIsolationForCrossOriginOpenerPolicy
 Controls whether to isolate sites of documents that specify an eligible
 Cross-Origin-Opener-Policy header.  Note that this is only intended to be
 used on Android, which does not use strict site isolation. See
 https://crbug.com/1018656.
❌
SkipIPCChannelPausingForNonGuests
 When enabled, the IPC channel will not be paused when launching non-guest
 renderer processes. This makes it possible for all kinds of mojo calls
 to be sent to the renderer process before OnProcessLaunched fires. When the
 feature is disabled, those messages are instead queued because the IPC
 channel is paused, and only flushed at OnProcessLaunched.
✅
SodaXnnpackDelegate
 Asks the Speech On-Device API (SODA) to run its TFLite models through the
 XNNPACK delegate. Older SODA binaries ignore the request.
❌
SpareRendererForSitePerProcess
 Controls whether SpareRenderProcessHostManager tries to always have a warm
 spare renderer process around for the most recently requested BrowserContext.
 This feature is only consulted in site-per-process mode.
✅
SpareRendererProcessPriority
 When enabled, sends the spare renderer information when setting the
 priority of renderers. Currently only Android handles the spare renderer
 information in priority.
 The target priority of a spare renderer in Android is decided by the feature
 parameters in ContentFeatureList.java.
❌
SpeakerChangeDetection
 Enable the Speaker Change Detection feature, which inserts a line break when
 the Speech On-Device API (SODA) detects a speaker change.
❌
SpecCompliantCanPlayThrough
 CanPlayThrough issued according to standard.
✅
SpeculativeImageDecodes—❌
SpeculativeServiceWorkerWarmUp
 Enable service worker warming-up feature. (https://crbug.com/1431792)
✅
stop-in-background
 Freeze scheduler task queues in background after allowed grace time.
 "stop" is a legacy name.
❌
StorageAccessAPIRelatedWebsiteSets—❌
StreamlineRendererInit
 Reduces the work done during renderer initialization.
❌
StrictOriginIsolation
 Controls whether site isolation should use origins instead of scheme and
 eTLD+1.
❌
SubframeProcessShutdownDelay
 Enables overriding the default subframe process shutdown delay via the
 "delay_seconds" field trial parameter. This allows for experimentation with
 different timeout values for keeping subframe processes alive for potential
 reuse.
✅
SubSampleWindowProxyUsageMetrics—✅
SuggestionManageButtonSplitForEnhancedAutofill
 When enabled, "Manage information" menu item for enhanced autofill will
 redirect user either to "/travel" or "/identityDocs" pages instead of
 "/yourSavedInfo" always.
✅
SuppressDifferentOriginSubframeJSDialogs
 Disallows window.{alert, prompt, confirm} if triggered inside a subframe that
 is not same origin with the main frame.
❌
SyntheticPointerActions
 Dispatch touch events to "SyntheticGestureController" for events from
 Devtool Protocol Input.dispatchTouchEvent to simulate touch events close to
 real OS events.
❌
TaskAttributionTraceMicrotaskTaskState—✅
ThreadedBodyLoader—❌
ThreadedPreloadScanner—❌
ThrottleFullscreenVideoActiveTab
 Enables throttling of the active (visible) page's throttleable task queues
 (JS timers) to 1 Hz while it contains an effectively-fullscreen video, to
 reduce CPU/power usage during fullscreen video playback.
❌
ThrottleInstallingServiceWorker
 Enable throttling of fetch() requests from service workers in the
 installing state.  The limit of 3 was chosen to match the limit
 in background main frames.  In addition, trials showed that this
 did not cause excessive timeouts and resulted in a net improvement
 in successful install rate on some platforms.
✅
ThrottleUnimportantFrameTimers
 Throttles Javascript timer wake ups of unimportant frames (cross origin
 frames with small proportion of the page's visible area and no user
 activation) on foreground pages.
❌
TouchDragAndContextMenu
 This feature allows touch dragging and a context menu to occur
 simultaneously, with the assumption that the menu is non-modal.  Without this
 feature, a long-press touch gesture can start either a drag or a context-menu
 in Blink, not both (more precisely, a context menu is shown only if a drag
 cannot be started).
❌
TrackEmptyRendererProcessesForReuse
 Controls whether the browser should track and reuse free and empty renderer
 processes. When enabled, the browser maintains a list of renderer processes
 that are currently not hosting any frames and are thus eligible for reuse
 when a new renderer process is needed. Currently, only background renderer
 processes are considered for reuse.
✅
UACHOverrideBlank
 Changes behavior of User-Agent Client Hints to send blank headers when the
 User-Agent string is overridden, instead of disabling the headers altogether.
❌
UnframedIwa
 Enable the 'unframed' display override for IWAs. go/unframed-explainer-doc.
✅
UnifiedAutoplay
 Enables the Unified Autoplay policy by overriding the platform's default
 autoplay policy.
✅
UnloadBlocklisted
 If enabled, the usage of unload handlers causes a blocklisted reason for
 BFCache. The purpose is to capture their source location.
❌
UnrestrictedSharedArrayBuffer
 This feature is for a reverse Origin Trial, enabling SharedArrayBuffer for
 sites as they migrate towards requiring cross-origin isolation for these
 features.
 TODO(bbudge): Remove when the deprecation is complete.
 https://developer.chrome.com/origintrials/#/view_trial/303992974847508481
 https://crbug.com/1144104
❌
UnrestrictSpellingAndGrammarForTesting—❌
UnthrottleAsyncTouchMoves—✅
UrgentMainFrameForInput
 When BeginMainFrame() is throttled, whether input-related BeginMainFrame()s
 are marked urgent, and thus unthtrottled.

 Enabled on Android, since a field trial showed benefits.
❌
URLPatternDummyURLCanonicalization
 If enabled, URLPattern will use standard defined dummy URL canonicalization
 to canonicalize URL properties. See https://crbug.com/409350827
✅
use-fake-device-for-media-stream—❌
UseAncestorRenderFrameForWorker—✅
UseAndroidOverlayForSecureOnly
 Use AndroidOverlay only if required for secure video playback. This requires
 that |kOverlayFullscreenVideo| is true, else it is ignored.
❌
UsePersistentCacheForCodeCache
 Use PersistentCache on either side of blink.mojom.CodeCacheHost. This feature
 is dependent on net::HttpCache::IsSplitCacheEnabled() being true. Always use
 IsPersistentCacheForCodeCacheEnabled() rather than querying this feature
 directly.
❌
UserMediaCaptureOnFocus
 If enabled, GetUserMedia API will only work when the concerned tab is in
 focus
❌
UseSandboxTokenForOriginDerivation
 Enable deriving sandboxed frame origins from browser-generated tokens
 instead of renderer-calculated opaque origins.
✅
UseSequencedTaskRunnerForMediaService
 Use SequencedTaskRunner for MediaService.
❌
UseSequencedTaskRunnerForMojoVEAProvider—❌
UseSettingsAddressEditorInPaymentsRequest
 When enabled, the address add/edit editor in the payments request would be
 removed and instead, the address editor from the settings will be used.
 TODO: crbug.com/399071964 - Remove when launched.
❌
UseSharedImageUsageForVideoFrameCopy
 When enabled, determines whether a VideoFrame requires copying before display
 based on whether the SharedImage usage includes
 SHARED_IMAGE_USAGE_DISPLAY_READ, rather than using
 VideoFrameMetadata::copy_required.
✅
UseTaskRunnerForMojoAudioDecoderService
 Feature flag to run the MojoAudioDecoderService in a sequence different than
 the other mojo media services. On some Android devices, MediaCodec may block
 the thread which leads to frequent audio decoder underrun in renderer.
 Running the audio decoder in a separate sequence can improve the performance.
 Note: running audio decoder in a separate thread/sequence will cause
 multithread access to mojo media services. For Android audio decoder, the
 thread safety is easier to guarantee because:
   1. The audio decoder and most of the other mojo media services don't cross
   reference each other.
   2. The only exception is CDM so we use a lock inside MojoCdmServiceContext
   for thread safety.
❌
UseWindowBoundsForPip
 Safety switch to allow us to revert to the previous behavior of using the
 restored bounds for PiP windows, rather than the window bounds.  If this
 feature is enabled (the default), then we'll use the window bounds.
✅
UseZstdForParkableStrings
 Use the zstd compression algorithm for ParkableString compression.
✅
V8VmFuture
 Enables future V8 VM features
❌
VaapiEarlyPPSParsingForCENCv1
 Ensures that the VAAPI context has been created before performing encrypted
 slice header parsing on ChromeOS VAAPI systems.
 TODO(b/520117896): remove the feature when a workaround can be found in the
 H264VaapiDecoderDelegate.
❌
VaapiLowPowerEncoderGen9x
 Enable VA-API hardware low power encoder for all codecs on intel Gen9x gpu.
✅
VaapiOnNvidiaGPUs
 NVIDIA VA-API drivers do not support Chromium and can sometimes cause
 crashes, disable VA-API on NVIDIA GPUs by default. See crbug.com/1492880.
 NVIDIA has been considering possibly supporting for an improved driver for
 hardware acceleration for ARM64 linux devices, so we have separated out the
 feature flag on that architecture.
❌
VaapiVideoMinResolutionForPerformance
 Ensure the advertised minimum supported resolution is larger than or equal to
 a given one (likely QVGA + 1) for certain codecs/modes and platforms, for
 performance reasons. This does not affect JPEG decoding.

 NOTE: This feature is default-enabled, but selectively disabled by tests
 so they can test resolutions below the threshold.  See crbug.com/40650027
✅
ValidateCommitOriginAtCommit
 Enables a CHECK in NavigationRequest::ValidateCommitOrigin() to verify
 that the origin used at commit time matches the expected origin stored
 in the FrameNavigationEntry, whenever PageState is non-empty.

 This helps catch session history corruption or stale origin-related state
 being sent to the renderer, which could violate origin isolation and lead
 to security issues (see crbug.com/41492620).

 This feature is disabled by default while we diagnose on Canary only.
❌
ValidateEncryptionPatternSize
 Validates that the EncryptionPattern parameters are within the bounds
 specified by ISO/IEC 23001-7:2016.
✅
VerifyDidCommitParams
 Enables comparing browser and renderer's DidCommitProvisionalLoadParams in
 RenderFrameHostImpl::VerifyThatBrowserAndRendererCalculatedDidCommitParamsMatch.
✅
video-blit-color-accuracy
 Inform video blitter of video color space.
✅
VideoDecodeBatching
 Controls whether to pre-dispatch more decode tasks when pending decodes is
 smaller than maximum supported decodes as advertiszed by decoder.
 Note: This is controlled on a per-board basis by ChromeOS and must be kept.
✅
VideoPipDisplaySmoothnessOptimization
 Enables video Picture-in-Picture display smoothness optimization.

 Ensures that the video PiP window title view is properly sized to only fit
 the favicon and origin.
✅
VideoPipForceTrustedForMediaPlaybackForTesting
 Forces video Picture-in-Picture windows to be treated as trusted for media
 playback. Used for debugging.
❌
VisualRectMappingApplyLocalVisualViewportTransform
 Server-side kill switch for applying the local VisualViewport transform
 (page scale + visual viewport location) when mapping visual rects into
 viewport space in LayoutView's slow path (ancestor == nullptr). This keeps
 results consistent with the GeometryMapper viewport fast path.
✅
VSyncDecoding—❌
VSyncEncoding—❌
WebAppEnableScopeExtensionsBySite
 Controls scope extensions feature in web apps. Enables parsing of "site"
 entries in "scope_extensions" field in web app manifests. See explainer for
 more information:
 https://github.com/WICG/manifest-incubations/blob/gh-pages/scope_extensions-explainer.md
❌
WebAppEnableScopeExtensionsForIsolatedWebApps
 This controls whether scope extensions work for isolated web apps which
 use same concepts as pwa
 https://github.com/WICG/manifest-incubations/blob/gh-pages/scope_extensions-explainer.md
 Note that for Isolated Web Apps it is not possible to capture link
 navigations without scope extensions.
✅
WebAppManifestLockScreen
 Controls parsing of the "lock_screen" dictionary field and its "start_url"
 entry in web app manifests.  See explainer for more information:
 https://github.com/WICG/lock-screen/
 Note: the lock screen API and OS integration is separately controlled by
 the content feature kWebLockScreenApi.
❌
WebAssemblyBaseline
 Enable WebAssembly baseline compilation (Liftoff).
✅
WebAssemblyExperimentalSharedEverything
 Enables WebAssembly Shared-Everything Threads.
❌
WebAssemblyLazyCompilation
 Enable WebAssembly lazy compilation (JIT on first call).
✅
WebAssemblyStackSwitching
 Enable WebAssembly Core stack switching.
 https://github.com/WebAssembly/stack-switching
❌
WebAssemblyTiering
 Enable WebAssembly tiering (Liftoff -> TurboFan).
✅
WebAssemblyTrapHandler
 Enable WebAssembly trap handler.
❌
WebAudioAudibilityHysteresis
 Controls whether WebAudio AudioContext has audibility hysteresis.
✅
WebAudioDeferPullStatusUpdate
 Use deferred pull status update instead of updating the status directly
 on audio thread. See https://crbug.com/40249972.
❌
WebBluetooth
 Controls whether the Web Bluetooth API is enabled:
 https://webbluetoothcg.github.io/web-bluetooth/
❌
WebBluetoothCancelConnect—✅
WebBluetoothNewPermissionsBackend
 Controls whether Web Bluetooth should use the new permissions backend. The
 new permissions backend uses ObjectPermissionContextBase, which is used by
 other device APIs, such as WebUSB. When enabled,
 WebBluetoothWatchAdvertisements and WebBluetoothGetDevices blink features are
 also enabled.
❌
WebCodecsVideoEncoderFrameDrop
 A video encoder is allowed to drop a frame in WebCodecs.
❌
WebContentsDiscard
 Enables a discard operation on WebContents to free associated resources.
 Eliminates the need to destroy the WebContents object to free its resources.
❌
WebContentsForceDark
 Automatically convert light-themed pages to use a Blink-generated dark theme
❌
WebFontsCacheAwareTimeoutAdaption
 The feature is disabled on Android for WebView API issue discussed at
 https://crbug.com/942440.
✅
WebGLDiscardBackBuffer—❌
WebIdentityDigitalCredentials
 Enables the Digital Credential API.
✅
WebIdentityDigitalCredentialsCreation
 Enables the Digital Credentials Creation API.
✅
WebLockScreenApi
 Enable the web lockscreen API implementation
 (https://github.com/WICG/lock-screen) in Chrome.
❌
WebOTP
 This is intended as a kill switch for the WebOTP Service feature. To enable
 this feature, the experimental web platform features flag should be set.
✅
WebOtpBackendAuto
 Controls which backend is used to retrieve OTP on Android. When disabled
 we use User Consent API.
❌
WebPayments
 The JavaScript API for payments on the web.
✅
webrtc-hw-decoding
 Enables HW decode acceleration for WebRTC.
✅
webrtc-hw-encoding
 Enables HW encode acceleration for WebRTC.
✅
WebRtcAllowDataChannelRecordingInWebrtcInternals
 Kill switch for crbug.com/407785197.
✅
WebRtcAudioNeuralResidualEchoEstimation—✅
WebRTCColorAccuracy
 Inform webrtc with correct video color space information whenever
 possible.
✅
WebRTCHardwareVideoEncoderFrameDrop
 A hardware video encoder is allowed to drop a frame in WebRTC.
✅
WebRtcHideLocalIpsWithMdns
 Causes WebRTC to replace host ICE candidate IP addresses with generated
 names ending in ".local" and resolve them using mDNS.
 http://crbug.com/878465
✅
WebRtcIgnoreUnspecifiedColorSpace
 Causes WebRTC to not set the color space of video frames on the receive side
 in case it's unspecified. Otherwise we will guess that the color space is
 BT709. http://crbug.com/1129243
❌
WebRtcMacSharedImageEncode
 On macOS, configures WebRTC's hardware video encoder (RTCVideoEncoder) to
 request native GPU input and pass SharedImage-backed VideoFrames without CPU
 readback. Depends on media::kVTVideoEncodeAcceleratorOpaqueSharedImageEncode
 (and media::kVTVideoEncodeAcceleratorOpaqueRgbSharedImageEncode for RGB
 canvas/WebGL/WebGPU frames) on the VideoToolbox encoder side.
❌
WebrtcMediaCapabilitiesParameters
 Used to set a few tunable parameters for the WebRTC Media Capabilities
 implementation.
✅
WebRtcPqcForDtls—✅
WebRtcSuppressDtlsStateChangeOnClose
 TODO(crbug.com/501209160): Remove this kill switch after confirming the
 standards-compliant behavior does not cause regressions.
✅
WebRtcUseCaptureBeginTimestamp—✅
WebRtcUseMediaThreadTypes—✅
WebRtcUseMinMaxVEADimensions
 Instructs WebRTC to honor the Min/Max Video Encode Accelerator dimensions.
❌
WebUIBundledCodeCache
 Enables build-time generated resource-bundled code caches for WebUI pages.
 See crbug.com/375509504 for details.
❌
WebUIBypassMojoConnections—❌
WebUICodeCache
 Enables code caching for scripts used on WebUI pages.
❌
WebUIInProcessResourceLoadingV2
 If enabled, opted-in WebUIs will optimize resources loading by piping a
 dictionary of URL paths to materialized WebUI resource content to the
 renderer via LocalResourceLoaderConfig.
 For now, only TopChrome WebUI renderer-related WebUIs are opted-in, including
 NavigationControl and Omnibox Popup.
 This is an extension of kWebUIInProcessResourceLoading which previously
 serves only resources in resource bundle.
 See crbug.com/459528908.
✅
WebUIJSErrorReportingExtended
 Reports WebUI Javascript errors to the crash server on all desktop platforms.
 Previously, this was only supported on ChromeOS and Linux.
 Intentionally enabled by default and will be used as a kill switch in case
 of regressions.
✅
WebUSB
 Controls whether the WebUSB API is enabled:
 https://wicg.github.io/webusb
✅
WebUSBTransferSizeLimit
 Kill switch for https://crbug.com/338955051.
✅
WebUSBWorldIsolatedCache
 Restricts the sharing of USBDevice instances across different V8
 worlds (e.g., main world and isolated worlds) to prevent cross-world
 leaks.
✅
WebviewAccelerateSmallCanvases
 Enables small accelerated canvases for webview (crbug.com/1004304)
❌
WebViewAsyncDrawOnly
 Trial to disable synchronous draw for synchronous compositor (ie Android
 WebView).
✅
WebViewPrefetchHighestPrefetchPriority
 Apply PrefetchPriority::kHighest for Webview Prefetch API.
✅
WebXR
 Controls whether the WebXR Device API is enabled.
✅
WideScreenFeedForFoldables—❌
WidevinePersistentLicenseSupport
 Controls the persistent license support for protected media that uses
 widevine.
✅
WorkerThreadRespectTermRequest
 WorkerThread termination respects the current thread termination request.
✅
XrDevice
 Indicates that renderer is running on an Android XR (AR/VR) device.
 Enables certain features which are not needed on other platforms.
❌
XsurfaceMetricsReporting—❌
ZeroCopyDesktopCapture
 Gated behind feature flag to allow safe rollback of zero-copy capture.
❌

Blink features

Enable with --enable-blink-features, disable with --disable-blink-features:

Name Description Enabled by default
AboutBlankPageRespectsDarkModeOnUserAction
 This flag changes about:blank to dark in dark mode on user action.
✅
Accelerated2dCanvas—✅
AcceleratedSmallCanvases—✅
AccessibilityCheckIfcInPreviousTextOnLine
 crbug.com/409809747
✅
AccessibilityCustomElementRoleNone—❌
AccessibilityExposeDisplayNone—❌
AccessibilityImplicitActions
 If the author did not define aria-actions, surface button and link
 children inside option and menuitem elements as implicit actions.
❌
AccessibilityMinRoleTabbable
 Use a minimum role of group on elements that are keyboard-focusable.
 See https://w3c.github.io/html-aam/#minimum-role.
❌
AccessibilityOSLevelBoldText—❌
AccessibilityProhibitedNames
 Enforce no accessible name on objects that have a role where names are
 prohibited (listed in https://w3c.github.io/aria/#namefromprohibited):
 log a friendly error in the developer console, and trigger a DCHECK().
 The incorrect markup situation will be repaired, and the name will
 be exposed as a description instead.
 TODO(crbug.com/350528330,
 https://github.com/web-platform-tests/interop-accessibility/issues/133,
 https://github.com/w3c/accname/issues/240,
 https://github.com/w3c/accname/issues/241): If community feedback is
 positive, and WPT + accname testable statements are updated to allow
 this, then add status: test.
❌
AccessibilitySerializationSizeMetrics—❌
AccessibilityUseAXPositionForDocumentMarkers—❌
AccessKeyLabel
 https://chromestatus.com/feature/5113389252739072
 https://issues.chromium.org/issues/41119923
❌
AddressSpace—❌
AdInterestGroupAPI
 Interest Group JS API/runtimeflag.
❌
AdjustEndOfNextParagraphIfMovedParagraphIsUpdated
 Adjust the end of the next paragraph if the end position for the
 paragraph is updated while moving the paragraph. See
 https://crbug.com/329121649
✅
AdTagging—❌
AIDecisionModelAPI—❌
AIDecisionModelAPIForWorkers—❌
AIEmbeddingsAPI—❌
AIEmbeddingsAPIForWorkers—❌
AIPageContentAnchoredFixedOffscreenNonActionability
 Strip actionability from content that is positioned offscreen
 via position:fixed and cannot be reached by scrolling.
✅
AIPageContentAnchoredNonFixedOffscreenNonActionability
 Strip actionability from content that is positioned offscreen via
 absolute/relative/static positioning and cannot be reached by scrolling.
✅
AIPageContentBuildOnLoadForTesting
 Whether to automatically build an APC content_extraction tree on load.
❌
AIPageContentCheckGeometry
 Whether to enforce geometry invariants in AIPageContentAgent.
 Only supported for DCHECK-enabled builds.
❌
AIPageContentConvertNodeTextToUtf8
 Ensures that text content extracted from DOM nodes are valid UTF-8 Before
 providing them to consumers of AIPageContent.
✅
AIPageContentElementCSSRedaction
 When enabled, redact elements with --webkit-text-security.
✅
AIPageContentIncludeSVGSubtree—✅
AIPageContentLabelExpandFallbackSources
 Add label sources in actionable APC.
✅
AIPageContentLabelRemoveRedundant
 Remove labels that duplicate extracted text in any node in its subtree
 or its image caption. Remove SVG root text when extracted child nodes
 already contain it.
❌
AIPageContentLabelRemoveRedundantWholeWordMatching
 Match labels to whole words or phrases in extracted text in any node in
 its subtree or its image caption, ignoring case. For example:
 - "Password" matches "Enter your password".
 - "lock" does not match "unlock".
 Exact matching still occurs when this is disabled, provided
 AIPageContentLabelRemoveRedundant is enabled.
❌
AIPageContentOuterBoxMapToAncestorSpace
 Use MapToVisualRectInAncestorSpace for outer bounding boxes, for
 math consistent with visual bounding boxes.
✅
AIPageContentPaidContentAnnotation—✅
AIPageContentSkipUnclickableFixedOverlays
 Let fixed wrappers with pointer-events: none use normal APC container
 skipping instead of preserving them automatically.
✅
AIPageContentTrackedElementsIframe
 When enabled, iframe element coordinates will be tracked using the
 Element::SetTrackedElementSubRect() method.
✅
AIPageContentTrackedElementsPassword
 When enabled, native or heuristics password element coordinates will be
 tracked using the Element::SetTrackedElementSubRect() method.
✅
AIPageContentVisualViewportClamp
 Clamp AIPageContent visible bounding boxes to the local-root viewport
 after visual-viewport mapping to normalize viewport-relative geometry.
✅
AIPromptAPI—❌
AIPromptAPIForWorkers—❌
AIPromptAPILegacyIdentifiers
 Gates access to legacy aliases of renamed "AIPromptAPI" identifiers.
 TODO(crbug.com/498228550): Remove after extension context usage drops.
❌
AIPromptAPILegacyParams
 Gates access to legacy sampling parameter surfaces for "AIPromptAPI".
 Enabled in extension contexts.
❌
AIPromptAPIMultimodalInput—❌
AIPromptAPIParams
 Gates access to inference parameter enhancements for "AIPromptAPI".
 This feature alone does not expose any "AIPromptAPI" feature access.
❌
AIPromptAPIStructuredOutput
 Gates access to the responseConstraint enhancement for "AIPromptAPI".
 This feature alone does not expose any "AIPromptAPI" feature access.
✅
AIPromptAPIToolUse
 Gates access to the tool use (function calling) enhancement for
 "AIPromptAPI". This feature alone does not expose any "AIPromptAPI"
 feature access.
❌
AIProofreadingAPI—❌
AIRewriterAPI—❌
AIRewriterAPIForWorkers—❌
AISummarizationAPI—❌
AISummarizationAPIForWorkers—❌
AISummarizationPerformancePreference—❌
AIWriterAPI—❌
AIWriterAPIForWorkers—❌
AlignZoomToCenter—✅
AllImagesPaintedSentToElementTiming—❌
AllowContentInitiatedDataUrlNavigations—❌
AllowPreloadingWithCSPMetaTag—❌
AllowSvgUseToReferenceExternalDocumentRoot—✅
AllowSyntheticTimingForCanvasCapture—❌
AllowURNsInIframes—❌
AncestorOriginsStoredOnDocument
 Instead of creating a new DOMStringList on every access to
 location.ancestorOrigins, return the ancestor origins list
 stored on Document.
 This was added in M147 and can be removed after M149.
 https://issues.chromium.org/issues/483610021
✅
AnchorPositionAdjustmentWithoutOverflow
 Kill switch for https://crbug.com/415834974 which changes anchor
 positioning adjustments to occur even in cases where there is no
 scrollable overflow.
✅
AndroidDownloadableFontsMatching—❌
AnimationEventAnimation
 https://chromestatus.com/feature/6046278267043840
✅
AnimationProgressAPI
 https://chromestatus.com/feature/5083257285378048
✅
AnimationRangeRejectRelativeLengths
 https://issues.chromium.org/issues/546237331
❌
AnimationTrigger
 https://drafts.csswg.org/web-animations-2/#triggers
✅
AnimationWorklet—❌
AnnotationSpaceForMultiCol
 crbug.com/538260158
❌
AnnotationSpaceOnStart
 crbug.com/445727139
✅
AnonymousIframe—✅
AOMAriaRelationshipProperties—✅
AOMAriaRelationshipPropertiesAriaOwns—❌
AppearanceBase
 appearance:base for in-page form controls.
 https://drafts.csswg.org/css-forms-1/
 https://issues.chromium.org/issues/450139531
 https://chromestatus.com/feature/5104958101913600
❌
AppearanceDisplayAdjustmentForWidgetsOnly
 Restricts the display adjustment in LayoutTheme::AdjustStyle() to
 elements which have a native widget appearance, so that appearance
 no longer changes display on other elements.
 See https://crbug.com/568576344 and https://crbug.com/408002786.
✅
ApproximateGeolocationPermission—❌
ApproximateGeolocationPermissionAccuracyMode
 Gates the returned accuracyMode parameter upon permissions.query({name: "geolocation"})
❌
ApproximateGeolocationPermissionAPI
 Gates the new permission "geolocation-approximate".
❌
ApproximateGeolocationWebVisibleAPI—❌
AppTitle—❌
AriaActions—❌
AriaNotify—❌
AriaNotifyV2—❌
AriaRowColIndexText—✅
AttributionReporting—✅
AudioContextAsyncStateTransitions
 The transition to "running" after construction happens asynchronously.
 Same for the transition to "suspended" after suspend() is called.
 https://webaudio.github.io/web-audio-api/#AudioContext-constructors
❌
AudioContextPlaybackStats
 AudioContext.playbackStats interface.
✅
AudioContextSetSinkId—✅
AudioOutputDevices—❌
AudioVideoTracks—❌
AudioWorkletSharedPort
 Shared MessagePort between AudioWorklet and AudioWorkletGlobalScope.
 https://chromestatus.com/feature/5079784523694080
❌
AuthorSpecifiedLayoutScrollSnapBehavior
 https://drafts.csswg.org/css-scroll-snap
✅
AutoDarkMode—❌
AutoDarkModeSkipImages
 When enabled, the dark mode filter (Auto Dark / force-dark) skips
 applying dark mode to images entirely; all images are kept untouched
 as if they are in light mode.
 P.N. AutoDarkMode needs to be applied separately.
❌
AutoDarkModeSVGSizeThreshold—✅
Autofill—❌
AutofillEvent—❌
AutofillPreviewGenericFontFamily
 Pins a generic font-family on the autofill preview pseudo-elements so
 an author @font-face cannot oracle the previewed text.
 crbug.com/517710554.
✅
AutofillPreviewIgnoreAuthorFont
 Makes form control elements have a hard coded font when they are in
 their autofill previewed state.
✅
AutomationControlled—❌
AutoPictureInPictureVideoHeuristics—❌
AutoSizeUsesScrollWidthForOverflow—✅
AvoidEmbeddedContentViewLocation
 Killswitch M156.
✅
AvoidNonSelectableSelectionBoundary
 Don't use a position inside non-selectable content as a selection
 boundary when it has no canonical position, which collapses the whole
 selection. See https://crbug.com/553831659.
✅
AvoidSynchronousBlurOnDisabledAttributeChange
 Disables the synchronous focus blur behavior when a focused form control
 is disabled.
✅
BackfaceVisibilityInterop
 When enabled, enforces new interoperable semantics for 3D transforms.
 See crbug.com/1008483.
❌
BackForwardCache—❌
BackForwardCacheExperimentHTTPHeader—❌
BackForwardCacheNotRestoredReasons—✅
BackForwardCacheRestorationPerformanceEntry—❌
BackForwardCacheUpdateNotRestoredReasonsName—✅
BackgroundClipTextDecoration—✅
BackgroundFetch—✅
BackgroundPageFreezeOptOut
 A developer opt-out for background page freezing.
❌
BarcodeDetector—❌
BaseAppearanceInlineSizing
 Removes special layout code from customizable select which was
 preventing it from growing in the inline direction.
✅
BasicShapeCornerRadius
 closest-corner/farthest-corner in circle()/ellipse().
 crbug.com/361617757
❌
BidiCaretAffinity—❌
BidiVisualOrderCaretMovement
 Visual caret movement in bidirectional text. When enabled, arrow
 keys move the caret in the visual (screen) direction rather than
 the logical (DOM/memory) order.
 Requires BidiCaretAffinity to be enabled for correct caret
 rendering at bidi boundaries.
❌
BlinkExtensionWebView—❌
BlinkExtensionWebViewMediaIntegrity—❌
BlinkGeometryMapperViewportFastPath
 Whether MapToVisualRectInAncestorSpace() with a null ancestor can
 use the geometry mapper fast path.
✅
BlinkLifecycleScriptForbidden—❌
BlinkRuntimeCallStats—❌
BlobBytes
 https://chromestatus.com/feature/4830298126417920
✅
BlockingFocusWithoutUserActivation—❌
BlockSelectPopupUnfocusedWindow
 Prevents the popup document for the select element from being opened
 if the corresponding OS window is not focused. Enabled in M147, can be
 removed in M150.
✅
BoundaryEventDispatchTracksNodeRemoval
 https://crbug.com/415304289: Mouse and Pointer boundary event dispatch
 (i.e. dispatch of enter, leave, over, out events) tracks DOM node removal
 to fix event pairing on ancestor nodes.
✅
BoxDecorationBreakCloneLineBreaking—❌
BrowserInitiatedAutomaticPictureInPicture—❌
BufferedBytesConsumerLimitSize—✅
BypassPepcSecurityForTesting
 Bypasses the enforcement of the Page Embedded Permission Control
 security checks. This flag is disabled by default and should only be
 enabled in automated tests in order to allow them to avoid needing to
 wait until the PEPC is validated and also to use JS-initiated clicks.
❌
CacheControlRFC7234Parsing
 Enables RFC 7234-compliant Cache-Control header parsing, removing RFC
 2616 separators that are not valid in RFC 7234.
 https://crbug.com/42050325
❌
CacheControlRFC7234ParsingMetrics
 Enables metrics collection comparing RFC 7234 vs RFC 2616 Cache-Control
 parsing. Performs double parsing on every Cache-Control header to
 measure behavioral differences. Can be disabled as a kill switch if
 performance issues arise.
 https://crbug.com/42050325
❌
CacheStorageCodeCacheHint—❌
CacheStyleAdjuster
 For emergency flag flips in case we discover bad bugs.
✅
CameraAndMicrophoneElements
 Enables the <camera> and <microphone> HTML elements, allowing sites to
 embed camera and microphone permission request controls directly in the page.
 https://chromestatus.com/feature/5153829504024576
✅
Canvas2dCanvasFilter—❌
Canvas2dDeferredFlush
 When enabled, avoids eagerly flushing raster draw ops in FinalizeFrame
 for composited 2D canvases, deferring the flush to
 PrepareTransferableResource.
❌
Canvas2dLayers—❌
Canvas2dLayersWithOptions—❌
Canvas2dMesh—❌
CanvasDrawElement
 https://github.com/WICG/html-in-canvas/blob/main/README.md
 Note the API name has changed to drawElementImage.
✅
CanvasFloatingPoint—✅
CanvasGlobalHDRHeadroom
 Canvas2D API for specifying HDR headroom for drawing operations.
 https:/crbug.com/428575083, https://github.com/whatwg/html/issues/11165
❌
CanvasGradientCSSColor4
 https://crbug.com/394052224
❌
CanvasHDR—❌
CanvasTextDirectionReflect
 Kill switch for https://crbug.com/385194416. Makes the canvas 2D
 context's direction getter reflect the stored keyword (including
 "inherit") instead of always resolving it to "ltr"/"rtl".
✅
CanvasTextMetricsPreciseBounds
 https://crbug.com/479240778
❌
CanvasToneMapping
 Canvas2D API for specifying HDR tone mapping behavior.
 https:/crbug.com/448552449, https://github.com/whatwg/html/issues/11424
❌
CanvasUsesArcPaintOp
 Kill switch for https://crbug.com/330506337.
✅
CapabilityDelegationDigitalCredentials
 Enables capability delegation for the Digital Credentials API (both
 create and get requests).
 https://crbug.com/512747131
❌
CapabilityDelegationDisplayCaptureRequest—❌
CapabilityDelegationPopup—❌
CapabilityElementIconOnlyMode
 Enables icon-only mode for capability elements.
 https://issues.chromium.org/issues/514564817
❌
CapitalizeAfterSupplementaryCharacterFix
 Considers the full previous code point (not one UTF-16 code unit) for
 text-transform: capitalize word boundaries. Kill switch for
 crbug.com/501115609.
✅
CaptureController—❌
CapturedMouseEvents
 TODO(crbug.com/1444712): Before enabling that flag by default,
 make sure MouseCursorOverlayController does not transmit mouse
 events to a CaptureController that don't have any
 capturedmousechange listener attached to it.
 See https://github.com/screen-share/mouse-events/issues/14
❌
CapturedSurfaceControl—❌
CapturedSurfaceResolution—❌
CaptureHandle—❌
CaretBlinking
 Allows automated test runners to keep focused carets visible.
✅
CaretBrowsingSequentialFocusStartingPoint
 Updates the sequential focus navigation starting point when moving the
 caret with the keyboard during caret browsing.
 https://crbug.com/567653181
✅
CaretOutsideEditableAtomicInline
 Keeps the caret outside an editable atomic inline - e.g.
 <div contenteditable style="display:inline-block"> - for a click that
 landed next to the box rather than on it.
 https://crbug.com/40780191
✅
CCTNewRFMPushBehavior
 Kill switch for changes to RenderFrameMetadataObserverImpl in connection with Engagement
 Signals. See https://crrev.com/c/4544201 and https://crbug.com/1458640.
❌
CDTNewCrossOriginHandling
 Compression Dictionary Transport: Align handling of crossorigin
 attribute on the spec.
❌
CDTNewDestination
 Compression Dictionary Transport: Use "compression-dictionary" as the
 destination string.
❌
CDTNewReferrerAndReferrerPolicyHandling
 Compression Dictionary Transport: Align handling of referrerpolicy
 attribute and referrer on the spec.
❌
CheckableInputTypeLayoutInline—✅
CheckCSPOnInlineScriptAttributeSet
 Run the CSP "Should element's inline behavior be blocked?" check when
 an event handler content attribute is set to an inline script.
 See the specs:
 https://html.spec.whatwg.org/multipage/webappapis.html#event-handler-content-attributes
 https://w3c.github.io/webappsec-csp/#should-block-inline
✅
ClampUnfocusedSelectionCache
 crbug.com/517429018
✅
CleanUpActivationBehavior
 This is a kill switch for a refactor of the way activation
 behaviors are triggered. It should not affect behavior.
 This flag shipped in M157 and can be removed in M160.
✅
ClearCurrentTargetAfterDispatch
 Set currentTarget to null after dispatch for EventTarget.
 This was added in M142 and can be removed after M144.
 https://issues.chromium.org/issues/346766786
✅
ClearDisplayLockPrePaintFlags
 Killswitch crbug.com/547894783
✅
ClearFocusWithinOnSubtreeRemoval
 Fixes a bug where ancestor elements retain a stale :focus-within
 state if the focused element's subtree is removed during blur
 or focusout events.
 This was added in M147 and can be removed after M149.
 https://issues.chromium.org/issues/454668198
 https://issues.chromium.org/issues/457465869
✅
ClearTargetOnlyIfInShadowTree
 Determine clearing of target and relatedTarget by checking
 if the top node is in shadow tree.
 This was added in M142 and can be removed after M144.
 https://issues.chromium.org/issues/373655918
 https://issues.chromium.org/issues/40253359
✅
ClipboardEventTargetUsesContainerNode
 Uses ComputeContainerNode() instead of AnchorNode() for clipboard event
 targeting so that kBeforeAnchor/kAfterAnchor selections correctly target
 the containing parent element rather than the element itself.
 See https://crbug.com/40684204
✅
ClipboardOnExtensionServiceWorker
 It is only enabled in extension environment.
❌
ClipboardPasteImageRespectBuffer
 Fix middle-click paste (kSelection buffer) from leaking images on
 the kStandard buffer via the image fallback in GetFragmentFromClipboard.
 crbug.com/497251066
✅
ClipElementVisibleBoundsInLocalRoot
 TODO(crbug.com/440374239): Disabled due to https://crbug.com/440374239.
❌
ClipPathNestedRasterOptimization—✅
CoalesceSelectionchangeEvent
 Avoid queuing a task to fire a selectionchange event when there is already a task scheduled
 to do that for the target according to the new spec:
 https://w3c.github.io/selection-api/#scheduling-selectionhange-event
✅
CoepReflection—❌
ColorInputAcceptsCSSColors
 Allows <input type=color> to accept any valid CSS color value
 (named colors, rgb(), hsl(), system colors, etc.) in addition to
 the legacy 7-character hex format (#rrggbb).
 https://crbug.com/40226268
 This was added in M146 and can be removed after M148.
✅
ColorSpaceDisplayP3Linear
 Enable the display-p3-linear color space in CSS.
 https://chromestatus.com/feature/5162372125818880
✅
ColorSpacePredefinedLinearSpaces
 Enable the srgb-linear and display-p3-linear color spaces in
 PredefinedColorSpace.
 https://chromestatus.com/feature/5122501071994880
✅
ColorSpaceRec2100Linear
 Enable the rec2100-linear color space in CSS and PredefinedColorSpace.
 https://chromestatus.com/feature/5204024772788224
❌
ComposedPathReturnTargetBeingDispatched
 Return the current target from composedPath() while
 dispatching.
 This was added in M142 and can be removed after M144.
 https://issues.chromium.org/issues/444932649
 https://issues.chromium.org/issues/346766786
✅
CompositeClipPathAnimation—✅
CompositedSelectionUpdate—❌
CompositeHoverStyle
 Precompute :hover styles and apply hover effects on the compositor
 without involving the main thread.
❌
CompositingDecisionAtAnimationPhaseBoundaries—❌
CompositionForegroundMarkers—❌
CompositorEventTrigger—❌
CompositorTimelineTrigger
 When enabled, TimelineTriggers[1] will function via cc::TimelineTrigger
 objects that live on the compositor thread.
 [1] https://drafts.csswg.org/css-animations-2/#timeline-triggers
✅
CompressionDictionaryTransport—❌
ComputedAccessibilityInfo—❌
ComputePressure—❌
ConcurrentNativePaintWorklets
 If enabled, allow concurrent animations via native paint worklets to
 run on the compositor thread.
❌
ConditionalTracingLoAF—❌
ConnectionAllowlistEmbeddedEnforcement
 Connection-Allowlist embedded enforcement: the connectionallowlist
 iframe attribute, by which an embedder requires a Connection-Allowlist
 of the document it frames. base_feature_status and
 copied_from_base_feature_if give the origin trial a Finch kill
 switch. See https://github.com/WICG/connection-allowlists/issues/1.
❌
ConstructableStylesheetCache—❌
ContactsManager—❌
ContactsManagerExtraProperties—❌
ContainerTiming—❌
ContentIndex—❌
ContextMenu—❌
ControlledFrame
 Enable support for Controlled Frame, providing the Controlled
 Frame tag to IWA apps and other contexts. See
 https://github.com/WICG/controlled-frame/blob/main/README.md for more
 info.
✅
ControlledFrameWebRequestSecurityInfo
 Enable support for requesting SecurityInfo in WebRequest API
 for controlled frames. See
 https://wicg.github.io/controlled-frame/#dictdef-securityinfo for more
 info.
✅
CookieStoreAPIMaxAge
 Enables setting the maxAge option when creating a cookie in the
 Cookie Store API.
✅
CookieStoreAPIWhitespaceStripping
 Feature flag for stripping \t and space from Cookie names and values.
 https://crbug.com/437345480
✅
CoopRestrictProperties—❌
CorrectTemplateFormParsing
 Corrects the handling of <form> elements nested within <template> tags
 in HTML parsing. See https://crbug.com/352896478 for details.
❌
CorsRFC1918—❌
CpuPerformance
 CPU Performance API
 https://chromestatus.com/feature/5189864286978048
 https://github.com/WICG/cpu-performance/
✅
CrashReportingStorageAPI—✅
CreateInlineContentsAnonymousBlock—✅
CrossOriginStorage
 TODO(crbug.com/547302825): Do not enable this feature before adding
 Permissions Policy support.
❌
CSPHashesV1
 When enabled, allowlisting script urls and scripts used in eval via
 hashes will be supported in script-src. This is a no-op if the
 network::features::kCSPScriptSrcHashesInV1 flag is off, since it
 controls parsing in the network service.
 See crbug.com/392657736 for details.
❌
CSPReportHash—✅
CSSAccentColorKeyword
 The AccentColor And AccentColorText CSS system color keywords
❌
CSSActiveCaptionMapsToCanvas
 Maps deprecated ActiveCaption to Canvas instead of CanvasText.
 https://drafts.csswg.org/css-color-4/#deprecated-system-colors
 https://crbug.com/41493724
✅
CSSAlphaColorFunction
 Ship in M152, should be removed in M154.
 https://drafts.csswg.org/css-color-5/#relative-alpha
 https://chromestatus.com/feature/5070160203481088
✅
CSSAlphaColorFunctionRequiresAlpha
 https://crbug.com/543376113
✅
CSSAltCounter
 Allows using counter() and counters() in alt text (after / in content property).
✅
CSSAnimationIterationComposite
 https://drafts.csswg.org/web-animations-2/#iteration-composite-operation
❌
CSSArgumentGrammar
 https://drafts.csswg.org/css-values-5/#early-resolution
❌
CSSAtRuleCounterStyleImageSymbols
 Whether <image> values are allowed as counter style <symbol>
❌
CSSAtRuleCounterStyleSpeakAsDescriptor
 https://drafts.csswg.org/css-counter-styles/#counter-style-speak-as
❌
CSSAttributeValueCaseSensitiveNonHTML
 https://crbug.com/41089999: Legacy ASCII case-insensitive attribute
 value matching only applies to HTML elements, so SVG and
 empty-namespace elements compare attribute values case-sensitively.
 Enabled by default; kept as a killswitch.
✅
CSSBackgroundClipBorderArea
 https://chromestatus.com/feature/6234471210811392
 Ship in M150, should be removed in M152.
✅
CSSBackgroundLayerCountIndependence
 Makes the computed value of the background-* longhands keep the number
 of comma-separated values the author specified, instead of repeating or
 truncating it to the background-image layer count. Repeating and
 truncating are used-value behaviour: "The computed values of the
 coordinating list properties are not affected by such truncation or
 repetition."
 https://drafts.csswg.org/css-values-4/ Appendix A
 https://drafts.csswg.org/css-backgrounds/#layering
 https://github.com/w3c/csswg-drafts/issues/7164
❌
CSSBorderShape
 https://chromestatus.com/feature/5459864205393920
 https://chromestatus.com/feature/5125388091260928
✅
CSSCalcEarlyNaNAndInfFolding
 Attempts to "fold" a calc() value to NaN or +/-Infinity when producing
 a CalculationValue. Can produce incorrect results if the expression
 contains percentages.
❌
CSSCalcSimplificationAndSerialization
 Support CSS Values Level 4 calc simplification and serialization
 as specified in the specs below.
 https://drafts.csswg.org/css-values-4/#calc-simplification
 https://drafts.csswg.org/css-values-4/#calc-serialize
❌
CSSCaretAnimation
 https://chromestatus.com/feature/5082469066604544
✅
CSSCaretColorWithOptionalSecondValue
 Two-value caret-color: <color> [<color>]?
 https://github.com/w3c/csswg-drafts/issues/13723
❌
CSSCaretShape
 https://chromestatus.com/feature/6106160780017664
✅
CSSCaseSensitiveSelector
 Support case-sensitive attribute selector modifier
 https://drafts.csswg.org/selectors-4/#attribute-case
❌
CSSChUnitSpecCompliantFallback
 In the cases where it is impossible or impractical to determine the
 measure of the “0” glyph, it must be assumed to be 0.5em wide by 1em
 tall. Thus, the ch unit falls back to 0.5em in the general case, and to
 1em when it would be typeset upright (i.e. writing-mode is vertical-rl or
 vertical-lr and text-orientation is upright).
 https://drafts.csswg.org/css-values-4/#ch
 See crbug.com/416145497 for more details.
✅
CSSColorTypedOM—❌
CSSContainerProgressNotation
 https://drafts.csswg.org/css-values-5/#progress
 container-progress()
❌
CSSContainerStyleQueriesRange
 https://drafts.csswg.org/css-conditional-5/#typedef-style-range
✅
CSSCornersShorthand
 https://drafts.csswg.org/css-borders-4/#corner-shaping
❌
CSSCounterResetReversed
 https://drafts.csswg.org/css-lists-3/#counter-reset
 https://crbug.com/40760770
❌
CSSCounterStyleSymbolsFunction
 The symbols() function for defining an anonymous counter style inline.
 https://drafts.csswg.org/css-counter-styles-3/#symbols-function
✅
CSSCrossFade
 Unprefixed cross-fade() (in addition to the existing -webkit-cross-fade()).
 https://drafts.csswg.org/css-images-4/#cross-fade-function
❌
CSSCustomHighlightUniversalSelector—❌
CSSCustomMedia—❌
CSSDynamicRangeLimit—✅
CSSEnumeratedCustomProperties
 Include custom properties in CSSComputedStyleDeclaration::item/length.
 https://crbug.com/949807
✅
CSSFlowStartAndEnd
 The 'flow-start' and 'flow-end' box alignment keywords.
 https://github.com/w3c/csswg-drafts/issues/14052
❌
CSSFlowStartAndEndSerialization
 Serialize 'flex-start' and 'flex-end' as 'flow-start' and 'flow-end'
 in computed styles.
 https://github.com/w3c/csswg-drafts/issues/14052
❌
CSSFontFamilySerialization
 crbug.com/483689942
 Serialize font-family names as space-separated idents when possible,
 per CSSWG resolution. See https://github.com/w3c/csswg-drafts/issues/5846.
❌
CSSFontSizeAdjust—✅
CSSFunctions
 https://drafts.csswg.org/css-mixins-1/#function-rule
✅
CSSGridLanesLayout—❌
CSSHangingPunctuation—❌
CSSHexAlphaColor
 This needs to be kept as a runtime flag as long as we need to forcibly
 disable it for WebView on Android versions older than P. See
 https://crrev.com/f311a84728272e30979432e8474089b3db3c67df
✅
CSSIdentFunction
 https://drafts.csswg.org/css-values-5/#ident
❌
CSSImageAnimation
 https://chromestatus.com/feature/5078177326170112
❌
CSSImageFunction
 image(<color>) functional notation, producing a solid-color image
 with no natural dimensions.
 Ship in M150, should be removed in M152.
 https://drafts.csswg.org/css-images-4/#funcdef-image
 https://chromestatus.com/feature/5121011285622784
✅
CSSInheritFunction
 The inherit() function works like var(), except that it grabs
 the computed value of the specified property from the parent style
 instead of the current style.

 https://drafts.csswg.org/css-values-5/#inherit-notation
❌
CSSInRangeOutOfRangeReversedRanges
 The :in-range and :out-of-range pseudo-classes support matching against
 <input type=time> elements with a reversed range.
 https://html.spec.whatwg.org/multipage/input.html#has-a-reversed-range
✅
CSSKeyframesRuleLength
 https://chromestatus.com/feature/6289894144212992
✅
CSSLangExtendedRanges
 Support for extended language ranges in :lang()
 https://chromestatus.com/feature/5071058079055872
❌
CSSLayoutAPI—❌
CSSLightDarkImage
 light-dark() for image values (background-image, etc.)
 Ship in M150, should be removed in M152.
 https://drafts.csswg.org/css-color-5/#light-dark
 https://chromestatus.com/feature/5123253146353664
✅
CSSLineClamp—❌
CSSLineClampAsShorthand—❌
CSSLineClampLineBreakingEllipsis—❌
CSSLinkParametersProperty
 https://chromestatus.com/feature/5095153430822912
❌
CSSListCounterAccounting
 Implements counter-increment and counter-set for the non-<li>
 elements and the reversed ordered lists.

 https://crbug.com/40682542
❌
CSSLogicalCombinationPseudo
 Allows pseudo-element selectors within logical combination pseudo-
 classes, e.g. :is(div::before).

 https://crbug.com/444386484
❌
CSSMarkerNestedPseudoElement—✅
CssMaxContentSizing
 https://github.com/explainers-by-googlers/css-shrink-to-fit
❌
CSSMediaElementPseudos
 Pseudo-classes :playing, :paused, :seeking, :buffering, :stalled,
 :muted, and :volume-locked for media elements.
 https://drafts.csswg.org/selectors/#resource-pseudos
❌
CSSMediaProgressNotation
 https://drafts.csswg.org/css-values-5/#progress
 media-progress()
❌
CSSMixins—❌
CSSNestedPseudoElements—✅
CSSOMGetComputedStylePseudoElementRequiresColon
 https://drafts.csswg.org/cssom/#dom-window-getcomputedstyle
❌
CSSPaintAPIArguments—❌
CSSParserIgnoreCharsetForURLs
 Ignore the stylesheet encoding when parsing URLs, always using UTF-8.
 See crbug.com/1485525.
❌
CSSPolygonRounding
 Support polygon(round &lt;length&gt;, ...) per CSS Shapes Level 1.
 Spec: https://www.w3.org/TR/css-shapes-1/#typedef-basic-shape
 Issue: https://crbug.com/329302249
 https://chromestatus.com/feature/6636392944893952
 Ship in M150, should be removed in M152.
✅
CSSPositionStickyStaticScrollPosition—❌
CSSPositionVisibilityAnchorValid
 Support for position-visibility: anchor-valid.
 See crbug.com/333421963.
✅
CSSPrivate
 The @private rule declares lexically-scoped custom properties that are
 visible only within the enclosing style rule and the elements it
 matches, with their names rewritten so they are never observable as
 author custom properties.
 crbug.com/542651959
❌
CSSProgressNotation
 https://drafts.csswg.org/css-values-5/#progress
 progress()
✅
CSSPseudoColumn
 For ::column pseudo-element for fragment styling.
 https://github.com/flackr/carousel/blob/main/fragmentation/README.md
✅
CSSPseudoElementBackdrop—✅
CSSPseudoElementInterface—✅
CSSPseudoElementScrollButton—❌
CSSPseudoElementSelectorText
 CSSPseudoElement.selectorText.
 https://drafts.csswg.org/css-pseudo-4/#dom-csspseudoelement-selectortext
❌
CSSPseudoElementViewTransitions—✅
CSSPseudoHasSlotted
 Enables the :has-slotted pseudo-selector.
 https://chromestatus.com/feature/5134941143433216
❌
CSSPseudoScrollButtons
 For ::scroll-up-button and ::scroll-down-button pseudo-elements for Carousel.
 https://github.com/flackr/carousel/tree/main/scroll-button
✅
CSSPseudoScrollMarkers
 For ::scroll-marker and ::scroll-marker-group pseudo-elements for Carousel.
 https://github.com/flackr/carousel/tree/main/scroll-marker
✅
CSSRandomFunction—✅
CSSRandomFunctionTypedOM—❌
CSSResizeAuto
 Non-standard 'auto' keyword for the CSS resize property. Used for
 selectively enable resize corner for textarea via UA stylesheet, but
 unintentionally exposed to author sheets. UA rule is now using
 -internal-textarea-auto instead.
✅
CSSResourceIntegrityEnforcement
 Kill switch for integrity() enforcement on CSS image and SVG
 document resources. See also: CSSURLRequestModifiers
✅
CSSRevertRule—✅
CSSRubyOverhang
 https://drafts.csswg.org/css-ruby/#ruby-overhang
 ChromeStatus: https://chromestatus.com/feature/6560118298771456
✅
CSSSafePrintableInset—✅
CSSScopeifiedParentPseudoClass
 The '&' pseudo-class effectively behaves like :where(:scope)
 when used in @scope rules.
✅
CSSScopeImport
 The "@import scope(...)" syntax.
 https://github.com/w3c/csswg-drafts/issues/7348
❌
CSSScrolledContainerQueries
 https://drafts.csswg.org/css-conditional-5/#scrolled
✅
CSSScrollInitialTarget
 https://drafts.csswg.org/css-scroll-snap-2#scroll-initial-target
✅
CSSScrollMarkerGroupModes
 https://github.com/w3c/csswg-drafts/issues/12122
✅
CSSScrollMarkerTargetBeforeAfter
 https://drafts.csswg.org/css-overflow-5/#active-before-after-scroll-markers
 :target-before and :target-after pseudo classes for scroll markers.
✅
CSSScrollSnapChangeEvent
 https://drafts.csswg.org/css-scroll-snap-2/#scrollsnapchange
✅
CSSScrollSnapChangingEvent
 https://drafts.csswg.org/css-scroll-snap-2/#scrollsnapchanging
✅
CSSScrollSnapEventConstructorExposed
 https://drafts.csswg.org/css-scroll-snap-2/#snapevent-interface
❌
CSSScrollSnapEvents
 https://drafts.csswg.org/css-scroll-snap-2/#snap-events
✅
CSSScrollSnapStopBefore—❌
CSSScrollSnapTypePair—✅
CSSScrollTargetGroup
 scroll-target-group property
 https://drafts.csswg.org/css-overflow-5/#scroll-target-group
✅
CSSScrollTargetGroupAriaCurrent
 scroll-target-group property sets aria-current=true on :target-current html scroll marker.
❌
CSSShapeOutsidePathAndShapeSupport
 path() and shape() basic shapes for shape-outside.
 https://drafts.csswg.org/css-shapes-1/#basic-shape-functions
 https://drafts.csswg.org/css-shapes/#shape-outside-property
 ChromeStatus: https://chromestatus.com/feature/5080980370096128
✅
CSSShapeOutsideRectAndXywhSupport
 rect() and xywh() basic shapes for shape-outside.
 https://drafts.csswg.org/css-shapes-1/#basic-shape-functions
 https://drafts.csswg.org/css-shapes/#shape-outside-property
 ChromeStatus: https://chromestatus.com/feature/6323071520735232
✅
CSSStyleSheetInitBaseURL
 https://drafts.csswg.org/cssom-1/#dom-cssstylesheetinit-baseurl
❌
CSSSupportsAtRuleFunction—✅
CSSSupportsForImportRules—✅
CSSSupportsNamedFeatureFunction
 https://chromestatus.com/feature/5153932394102784
 Shipping in M150, so flag can be removed around M152.
✅
CSSSystemAccentColor
 Allows the CSS "accent-color" property to support the system accent color as the default option.
❌
CSSTextAlignMatchParent
 https://issues.chromium.org/40787216: CSS text-align: match-parent value
❌
CSSTextDecorationInset
 crbug.com/468928416, crbug.com/498974811
✅
CSSTextDecorationSkipInkAll
 https://issues.chromium.org/40675832: CSS text-decoration-skip-ink: all value
✅
CSSTextDecorationSkipSpaces—❌
CssTextFit
 crbug.com/417306102
✅
CssTextFitReshaping
 crbug.com/417306102
❌
CSSTextSpacing
 crbug.com/1463890, crbug.com/1463891: CSS text-spacing shorthand
❌
CSSTextTransformFullSizeKana
 https://crbug.com/40928177: Support of text-transform: full-size-kana
❌
CSSTextTransformFullWidth
 https://issues.chromium.org/41297237: CSS text-transform: full-width value
❌
CSSTextTransformMultiKeyword
 crbug.com/41297237: Support multi-keyword values in CSS text-transform.
❌
CSSTimelineScopeAll
 Support for the 'all' keyword of the 'timeline-scope' property.

 https://drafts.csswg.org/scroll-animations-1/#timeline-scope
❌
CSSTimelineScopeGlobal
 Makes timeline names global by default.

 https://github.com/w3c/csswg-drafts/issues/12581
❌
CSSTreeScopedScrollTimeline
 Support tree-scoped scroll and view timeline names according to the
 CSSWG resolution on tree-scoped references.
❌
CSSURLRequestModifiers
 CSS URL request modifiers: cross-origin(), integrity(),
 referrer-policy() inside url() functions.

 https://drafts.csswg.org/css-values-5/#request-url-modifiers
✅
CSSUserSelectContain
 Support for user-select:contain.
❌
CSSUserValidAndUserInvalidForRadio
 https://crbug.com/488305665: Support :user-valid/:user-invalid for radio buttons.
 This lands in M147, and the flag can be removed in M149.

 https://drafts.csswg.org/selectors-4/#user-valid-pseudo
✅
CSSVideoDynamicRangeMediaQueries—❌
CSSViewTransitionAutoName
 https://chromestatus.com/feature/4850737974345728
❌
CSSWindowDrag—✅
CSSZoomAnimation
 CSSWG resolution to make the zoom property continuously
 interpolatable. https://github.com/w3c/csswg-drafts/issues/10872
 Ship in M150, should be removed in M152.
 ChromeStatus: https://chromestatus.com/feature/5183671737909248
✅
CustomElementsDisableFormattingFixups
 Shipping in M148 (or backported earlier), can be removed in M150.
✅
CustomizableCombobox
 appearance:base for the <datalist> element when it is invoked as a
 picker from an <input type=text>.
 https://issues.chromium.org/issues/453705243
 https://chromestatus.com/feature/5067156794507264
❌
CustomizableSelectMultiplePopup
 appearance:base-select for <select multiple size=1> with a picker.
❌
CustomizableSelectNewUAStyles
 Adds new UA styles for customizable select from CSSWG discussions.
 https://chromestatus.com/feature/6270612585709568
❌
CustomScrollbarApplyMinimumThumbLength
 see crbug.com/341313078
✅
Database
 https://chromestatus.com/feature/5134293578285056
❌
DateTimeInputTypeEarlyAdvanceFix
 https://crbug.com/473454959
✅
DeclarativeCSSModules
 https://crbug.com/448174611
❌
DeclarativeCSSModulesStyleTag
 https://crbug.com/448174611
❌
DeclarativeFragment—❌
DeclarativePerformanceObserver—❌
DeclarativeSkeletons—❌
DeclarativeWebMCP
 Declarative WebMCP: tools declared via HTML <form> attributes
 (toolname, tooldescription, ...), and the associated CSS
 pseudo-classes and SubmitEvent extensions. It builds on top of the
 imperative WebMCP feature (document.modelContext).

 This shares the "WebMCP" origin trial with imperative WebMCP, so that
 declarative WebMCP keeps working for origin trial participants, while
 still being independently controllable (e.g. kill-switchable) through
 its own base feature. Declarative WebMCP builds on the imperative
 infrastructure, so C++ callers should use
 ModelContext::IsDeclarativeWebMCPEnabled(), which also requires
 WebMCP to be enabled (and thus honors the kWebMCP kill switch).
 depends_on can't be used here since depending on an origin trial
 feature is not supported.

 Overriding the kWebMCP base feature (e.g. --enable-features=WebMCP)
 also sets this feature; see content/child/runtime_features.cc. An
 explicit kDeclarativeWebMCP override takes precedence.
❌
DeferLineBoxHitTestToBackground—✅
DelegatesFocusTextControlInputFix
 Killswitch for https://crbug.com/400317114 fix.
 This lands in M142, and the flag can be removed in M144.
✅
DeprecateUnloadOptOut
 This allows pages to opt out of the unload deprecation. Enabling this
 allows unload event handers to be used in the frame regardless of any
 Permissions-Policy setting.
 https://crbug.com/1432116
❌
DesktopCaptureDisableLocalEchoControl—❌
DesktopPWAsAdditionalWindowingControls—❌
DesktopPWAsAdditionalWindowingControlsOnMove—❌
DeviceAttributes—❌
DeviceOrientationRequestPermission—✅
DevicePosture—✅
DialogCloseWhenOpenRemoved
 crbug.com/520262209: This feature makes the <dialog> element close
 properly when its "open" attribute is removed. See
  - https://github.com/whatwg/html/issues/5802
  - https://github.com/whatwg/html/pull/10124
❌
DialogNewFocusBehavior—❌
DigitalCredentialsProtocolFilter—❌
DigitalGoods—❌
DigitalGoodsV2_1—❌
DirectSockets—❌
DirectSocketsInServiceWorkers
 Experimental support for the Direct Sockets API in Service Workers.
 https://github.com/WICG/direct-sockets
❌
DirectSocketsInSharedWorkers
 Experimental support for the Direct Sockets API in Shared Workers.
 https://github.com/WICG/direct-sockets
❌
DisableAnchorCenterOnAlignJustifyItems—✅
DisableDifferentOriginSubframeDialogSuppression—❌
DisableEllipsisWhenScrolled
 Switch from ellipsis to clip when a container is scrolled.
 This shipped in M146 and the flag can be removed in M148.
❌
DisableFormControlChangeEventDuringMutation
 Prevents the change event from being fired within
 HTMLFieldSetElement::ChildrenChanged because we aren't supposed to
 fire events during mutations like that.
 https://issues.chromium.org/issues/523756329
 https://issues.chromium.org/issues/523748081
 https://issues.chromium.org/issues/523737685
 Enabled in 151, safe to remove in 153.
✅
DisconnectWebSocketOnBFCache—✅
DispatchHiddenVisibilityTransitions
 kHidden and kHiddenButPainting visibility states are treated as
 hidden in the sense of document.visibilityState.  However, they are
 handled differently internally.  For example, video playback should
 continue in kHiddenButPainting, such as when the page is being
 background captured.  When enabled, this feature causes blink to
 notify internal observers about visibility changes between the two
 hidden states, in addition to transitions to/from kVisible.

 Since the two hidden states are exposed to the web identically, there
 is no visibilitychanged event fired when switching between them.

 When this feature is disabled, blink reverts to its original behavior
 of eliding transitions between the two hidden states, including to
 internal observers.  This behavior causes problems with capture and
 picture-in-picture, but is preserved as a safe fallback.
✅
DispatchSelectionchangeEventPerElement
 Dispatch selectionchange event per element according to the new spec:
 https://w3c.github.io/selection-api/#selectionchange-event
✅
DispatchWorkerCSPViolationEventForModuleGraphFetching
 Dispatches a securitypolicyviolation event for CSP violations
 detected while fetching a worker's or worklet's module graph
 (top-level script, redirects, and nested static imports).
 See https://crbug.com/40612680
❌
DisplayContentsFocusable
 Allowing elements with display:contents to have focus.
 See https://crbug.com/1366037
❌
DisplayCutoutAPI—❌
DocumentCookie—❌
DocumentDomain—❌
DocumentIsolationPolicy
 Enables DocumentIsolationPolicy.
 See https://https://github.com/WICG/document-isolation-policy.
❌
DocumentNamedPropertiesIgnoreExposedness
 Kill switch for including non-exposed <object> and <embed> elements in
 document named properties. crbug.com/551807991
 Lands in M155 and can be removed in M157.
✅
DocumentOpenIframeUnloadEvents
 Fix iframe unload events not firing during document.open()
 https://crbug.com/40947017
 Lands in M144; remove this flag in M146 after the milestone rolls.
✅
DocumentOpenOriginAliasRemoval—❌
DocumentOpenSandboxInheritanceRemoval—✅
DocumentPatching
 https://chromestatus.com/feature/5111042975465472
 <template patchfor> etc.
✅
DocumentPictureInPictureAPI—❌
DocumentPictureInPicturePreferInitialPlacement
 Enables preferInitialWindowPlacement Document PiP option to skip
 re-using the previous pip window bounds.
❌
DocumentPictureInPictureUserActivation
 Enables propagating user activation from a document picture-in-picture
 window up to its opener window and vice versa.
❌
DocumentPolicyDocumentDomain
 Enables the ability to use Document Policy header to control feature
 DocumentDomain.
❌
DocumentPolicyExpectNoLinkedResources
 Enables the ability to use Document Policy header to control feature
 ExpectNoLinkedResources.
✅
DocumentPolicyIncludeJSCallStacksInCrashReports
 Enables the ability to use Document Policy header to control feature
 IncludeJSCallStacksInCrashReports. https://chromestatus.com/feature/4731248572628992
✅
DocumentPolicyInDedicatedWorker
 Enables Document Policy for DedicatedWorkers.
❌
DocumentPolicyJSProfilingMode—❌
DocumentPolicyNegotiation—❌
DocumentPolicyNetworkEfficiencyGuardrails
 Enables the ability to use Document Policy header to control feature
 NetworkEfficiencyGuardrails. https://chromestatus.com/feature/5156240166223872
❌
DocumentPolicySyncXHR
 Enables the ability to use Document Policy header to control feature
 SyncXHR.
❌
DocumentWrite—❌
DOMParserXmlScriptAlreadyStarted
 Kill switch for marking scripts parsed by DOMParser in XML documents as
 "already started" so they stay inert when cloned or imported.
 https://crbug.com/542115030
✅
DragAndDropDownloadURLList
 https://chromestatus.com/feature/4909387902746624
 Enables dragging multiple files out of a web page via the
 DownloadURL-list drag type.
❌
DragAndDropJSFileObjects
 Enables JS-constructed File objects (e.g. new File([bytes], 'photo.jpg'))
 to carry their blob contents through the drag-and-drop pipeline.
 When disabled, only the filename is sent as text/plain (legacy behavior).
❌
DragImageForLargeImages
 When enabled, drag image previews are generated for images regardless
 of their intrinsic size (the output is still clamped to
 MaxDragImageSize). When disabled, images whose intrinsic area exceeds
 kMaxOriginalImageArea produce no drag preview (legacy behavior). Acts
 as a kill switch for the removal of that cap. See
 https://crbug.com/518266739
✅
DragThresholdRequiresMouseMovement
 When enabled, the cursor needs to move past the drag start threshold in
 absolute screen coordinates rather than window relative coordinates.
 See https://crbug.com/40943926 and
 https://html.spec.whatwg.org/multipage/dnd.html#security-risks-in-the-drag-and-drop-model
❌
DumpForAbsentKeyframeSnapshots
 See: crrev.com/c/7874048
 Diagnostic flag to gather data for a case when compositable animations lack snapshots without a known reason.
❌
EditContextAssignmentAsPerSpec
 See https://crbug.com/443612843
❌
EditContextBoundsUpdateSchedulesFrame
 Schedule a main frame when EditContext.updateControlBounds() or
 updateSelectionBounds() changes the bounds of the active EditContext,
 so the new bounds are sent to the browser in TextInputStateChanged even
 when called from an async task that doesn't otherwise cause a frame.
✅
EditContextCodePointDeletion
 Support code point-based deletion calculations in
 DeleteSurroundingTextInCodePoints() for EditContext.
✅
EditContextHandleTextOrSelectionUpdateDuringComposition
 See https://crbug.com/379170477
❌
EditContextSelectionUpdateBeforeTextUpdateEvent
 Update EditContext selectionStart/End before TextUpdateEvent while
 handling deletion. See https://crbug.com/529413105
✅
EditingUseDomPositionApi—❌
ElasticOverscrollBackgroundPaintLocationFix
 Elastic overscroll requires even solid color background to be painted
 in the border box space to ensure they aren't shifted away.
✅
ElasticOverscrollUseEventDeltaForAxisSelection
 Uses the original event delta to choose the initial elastic overscroll
 axis.
✅
ElementCapture—❌
ElementInternalsBehaviors
 ElementInternals.behaviors allows web authors to attach
 platform-provided behaviors to custom elements, enabling
 them to adopt native behaviors without extending native
 elements.
 crbug.com/486928684
 https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/PlatformProvidedBehaviors/explainer.md
❌
ElementMatchContainer—❌
ElementSpecificReadOnlyConstraintValidation
 When enabled, the readonly attribute will prevent constraint validation
 only in some cases, depending on the element.
 This was added in M147 and can be removed after M149.
 https://issues.chromium.org/issues/486228104
✅
EmailVerificationProtocol—❌
EmbeddedContentCenterAlignBaseline
 This was added in M151 and can be removed after M153.
 https://issues.chromium.org/issues/525074815
✅
EmojiZWJVerticalOrientation
 Kill switch for https://crbug.com/41384307.
✅
EnableXSLTForCAPAlerts
 Controls whether XSLT processing is selectively re-enabled for
 Common Alerting Protocol (CAP) alert XML documents when native XSLT
 is otherwise disabled.
 crbug.com/435623334.
✅
EndpointInclusiveCommitStyles—✅
EnforceAnonymityExposure—✅
EntropyIgnoredForFirstVideoFrameLCP
 When enabled, the LCP algorithm ignores image entropy for the first
 video frame. See crbug.com/434659232.
❌
EventPseudoTargetProperty
 event.pseudoTarget property to represent pseudo-elements in events. Returns CSSPseudoElement or null.
✅
EventPseudoTargetViewTransitionName—✅
EventTimingInteractionCount
 Kill-switch for https://chromestatus.com/feature/5153386492198912
 Added in M144, can be removed in M146.
✅
EventTimingMatchingHTML
 Interoperable dispatch timing for transitionrun and media query events.
 https://chromestatus.com/feature/6312504658624512
✅
EventTimingTargetSelector—❌
EventTrigger
 https://drafts.csswg.org/web-animations-2/#triggers
❌
ExperimentalContentSecurityPolicyFeatures—❌
ExperimentalJSProfilerMarkers—❌
ExperimentalMachineLearningNeuralNetwork—❌
ExperimentalPolicies—❌
ExposeCSSFontFeatureValuesRule—✅
ExposeRenderTimeNonTaoDelayedImage—❌
ExtendedTextMetrics—❌
ExtensionScriptTagging—✅
ExtensionScriptTaggingTestingAPI—❌
ExternalPopupMenuClickEvent
 Kill-switch for crbug.com/40434449.
 Added in M139, and it can be removed in M141.
✅
EyeDropperAPI—❌
FaceDetector—❌
FastCompositionCharacterBounds—✅
FastPositionIterator—❌
FedCm—✅
FedCmActiveModeMultipleIdentityProviders—❌
FedCmAutofill—❌
FedCmDelegation—❌
FedCmIdentityHandler—❌
FedCmIdPRegistration—❌
FedCmLightweightMode—❌
FedCmMultipleIdentityProviders—✅
FedCmMultipleRequests—✅
FedCmNavigationInterception—❌
FencedFrames—✅
FencedFramesAPIChanges—✅
FencedFramesLocalUnpartitionedDataAccess
 Allows fenced frames to access unpartioned data via Shared Storage in
 exchange for disabling untrusted network access. This is the Blink
 counterpart of the base::Feature with the same name. Because local
 unpartitioned data access requires browser and renderer process
 coordination, the value of this flag is strictly controlled by the
 base::Feature variant, and setting this flag does nothing.
❌
FetchBodyBytes
 Add Request.bytes() and Response.bytes()
 https://chromestatus.com/feature/5239268180754432
✅
FetchLaterAPI
 The Blink runtime-enabled feature name for the API's IDL.
 https://chromestatus.com/feature/4654499737632768
✅
FetchRetry
 The retry ability for Fetch keepalive requests.
 https://chromestatus.com/feature/5181984581877760
❌
FetchUploadStreaming—✅
FileHandling
 Also enabled when blink::features::kFileHandlingAPI is overridden
 on the command line (or via chrome://flags).
❌
FilePickerEventsFix
 For <input type=file>, fires change event when same file is chosen
 again, and retains files when cancel is pressed.
✅
FileSystem—✅
FileSystemAccess
 Shared objects by OPFS and non-OPFS File System Access API.
❌
FileSystemAccessAPIExperimental
 In-development features for the File System Access API.
❌
FileSystemAccessGetCloudIdentifiers
 The FileSystemHandle.getCloudIdentifiers() method (see
 crbug.com/1443354).
❌
FileSystemAccessLocal
 Non-OPFS File System Access API.
❌
FileSystemAccessLockingScheme—✅
FileSystemAccessOriginPrivate
 OPFS File System Access API.
✅
FileSystemAccessRevokeReadOnRemove
 When enabled, calling remove() on a FileSystemAccessHandle will also
 update the permission grants for the associated path. Restored after
 next write to the path.
 See crbug.com/421690393.
✅
FileSystemAccessWriteMode
 Controls the internal write-only mode for various FileSystemAccess API.
 This covers mostly content layer and does not expose any write mode to
 user visible APIs.
 This flag is part of crbug.com/421690393 and crbug.com/328458680.
✅
FileSystemObserver
 The FileSystemObserver interface for the File System Access API.
 See https://crbug.com/1019297.
❌
FileSystemObserverUnobserve
 The unobserve function of the FileSystemObserver.
 See https://crbug.com/321980469.
❌
FilterableSelect
 Adds the filter attribute to the input element, which targets a
 listbox select element to perform filtering.
❌
FilterContainerLevelStyles
 Fix for https://crbug.com/41153707
✅
FilteringPrimitives
 Enables the beforefilter event and the option.filtered IDL, which are
 shared primitives needed by both the FilterableSelect and
 CustomizableCombobox features.
❌
FindBufferCollapseSkippedSpace—✅
FindBufferMatchAcrossIgnoredNodes—✅
FindBufferSkipIgnoredSubtrees
 Fix for https://crbug.com/558819236
✅
FindFirstMisspellingEndWhenNonEditable—✅
FindIgnoreSuggestionFix
 crbug.com/553136688 and crbug.com/553252820
✅
FirstLineAndLetterExcludeInputTextarea
 https://github.com/w3c/csswg-drafts/issues/13926
✅
FirstLineTextMetrics
 It turned out that this fix was wrong. The plan is to turn it off, and
 remove if that goes well. crbug.com/41362700
❌
FixHTMLFormControlElementIsReadOnly
 When enabled, HTMLFormControlElement::IsReadOnly() returns false for
 types that don't support readonly.
✅
FixMapElementEmptyNameBug
 Fix a bug in the <map> element's caching of the name attribute. This
 flag was added in M148, and can be removed in M150.
✅
FixSelectionPaintRangeNullOpt
 Guard the kStart / kEnd / kStartAndEnd branches of
 LayoutSelection::ComputeSelectionStatus against std::nullopt
 start_offset / end_offset in SelectionPaintRange.
 See https://crbug.com/489028874
✅
FixVisualRectRemoteViewportTransform
 Fix LayoutView viewport mapping in the GeometryMapper fast path for
 OOPIFs.
✅
Fledge—❌
FledgeAuctionDealSupport
 Enables deal support within auctions.
❌
FledgeBiddingAndAuctionServerAPI—✅
FledgeBiddingAndAuctionServerAPIMultiSeller—✅
FledgeClickiness—❌
FledgeCustomMaxAuctionAdComponents—✅
FledgeDeprecatedRenderURLReplacements
 Enables using a 'deprecatedRenderURLReplacements' field within the
 Protected Audience ad auction config.
✅
FledgeDirectFromSellerSignalsHeaderAdSlot—✅
FledgeDirectFromSellerSignalsWebBundles
 Feature flag to control removal, in case we run into unexpected
 breakage.

 TODO(crbug.com/384481095): Remove in a few milestones, along with the
 implementation code.
❌
FledgeMultiBid—✅
FledgePrivateModelTraining
 Enables the private model training API in Protected Audience.
 https://github.com/WICG/turtledove/blob/main/PA_private_model_training.md
❌
FledgeRealTimeReporting
 Enables real time reporting API in Protected Audience.
 https://github.com/WICG/turtledove/blob/main/PA_real_time_monitoring.md
✅
FledgeSellerNonce
 Enables the ability to set seller nonces on the header response and
 use bidNonce in bids.
✅
FledgeSellerScriptExecutionMode
 Enables having executionMode in the auctionConfig to use for seller scripts.
❌
FledgeTrustedSignalsKVv1CreativeScanning—❌
FledgeTrustedSignalsKVv2ContextualData—❌
FledgeTrustedSignalsKVv2Support—✅
FlexWrapBalance—✅
Focusgroup
 https://open-ui.org/components/scoped-focusgroup.explainer/
✅
FocusgroupV2
 https://open-ui.org/components/focusgroup-v2.explainer/
❌
FocusResetEvent
 Fires a "focusreset" event at a Document during "update the rendering"
 when its focused element was removed and focus was not explicitly
 moved since. https://github.com/whatwg/html/pull/13050
❌
FocusRingRespectExplicitOutlineColorInDarkMode
 Respects explicit outline colors for focus rings in dark mode and uses
 an off-white default. https://issues.chromium.org/issues/480978106
✅
FontAccess—❌
FontationsPrinting—✅
FontDataServiceForCSSLocalFonts—❌
FontFamilyPostscriptMatchingCTMigration—❌
FontFamilyStyleMatchingCTMigration—❌
FontFeatureSettingsDescriptor
 crbug.com/40398871
✅
FontFormatAvar2—✅
FontLanguageOverride
 crbug.com/41170551
✅
FontMatchAliasesAsLastResort—✅
FontPrewarmerShutdownFallback
 Kill switch for https://crbug.com/489865845.
✅
FontStyleObliqueZeroDegreeAsNormal
 crbug.com/393391746
✅
FontUniqueNameTypefaceCache
 crbug.com/325826179
✅
FontVariableItalicAxis—✅
FontVariationSettingsDescriptor
 crbug.com/40398871
✅
ForcedColors
 TODO(crbug.com/1231644): This flag is being kept (even though the
 feature has shipped) until there are settings to allow users to
 customize the feature.
✅
ForceEagerMeasureMemory—❌
ForceReduceMotion
 https://github.com/flackr/reduce-motion/blob/main/explainer.md
❌
ForwardReasonToFetchBodyAbort
 Flag for rolling out the standardized behavior where fetch calls are
 rejected with the reason provided to the abort controller, if one was
 provided. See crbug.com/502133195
✅
FractionalScrollOffsets—❌
FractionalScrollOffsetsForWebAPI
 https://crbug.com/40384509.
❌
FragmentedOofInCb
 Generate layout fragments for out-of-flow positioned elements as
 children of their actual containing block - ALSO when inside block
 fragmentation, such as multicol. See crbug.com/40267498
❌
FrameCaretSkipHiddenCheck
 crbug.com/570740320
✅
FreezeFramesOnVisibility—❌
GamepadButtonTypes—❌
GamepadMultitouch—❌
GamepadRawInputChangeEvent—❌
GamepadWindowEventHandlers—✅
GenerateDragOverlayBeforeDragStart
 When enabled, the drag image overlay for an element will be created
 before the "dragstart" event is fired. This fixes a bug that made
 drags not start if the "dragstart" event caused a layout shift that
 made the mouse hit test miss the drag source.
✅
GenerateXSLTWarningBanner
 Killswitch for the visible deprecation warning banner shown on
 XSLT-transformed documents. This will be present until the banner is
 removed in M158.
✅
GeolocationElement
 Tracking bug for the implementation: https://crbug.com/430204832
✅
GeometryMapperSingularTransformFix
 A feature flag that controls whether the geometry mapper singular
 transform fix is enabled.
 https://issues.chromium.org/issues/441128445
✅
GeometryUtils
 GeometryUtils mixin.
 https://drafts.csswg.org/cssom-view/#the-geometryutils-interface
❌
GeometryUtilsForCSSPseudoElement
 GeometryUtils for CSSPseudoElement interface.
 https://www.w3.org/TR/cssom-view-1/#the-geometryutils-interface
❌
GetAllScreensMedia—❌
GetDisplayMedia—❌
GetDisplayMediaAudioSelection
 When a Web application calls getDisplayMedia(), allow a hint to be
 provided as to whether the Web application prefers prioritizing audio
 capture.

 https://w3c.github.io/mediacapture-screen-share/#dom-displaymediastreamoptions-audioselection
✅
GetDisplayMediaRequiresUserActivation—❌
GetDisplayMediaWindowAudioCapture
 When a Web application calls getDisplayMedia() and asks for audio,
 allow a hint to be provided as to whether the Web application is
 interested in audio being among the options offered to the user
 on window display surfaces.

 https://www.w3.org/TR/screen-capture/#dom-displaymediastreamoptions-windowaudio
✅
GetElementsByNameOnlyHTMLElements
 To filter only elements in the HTML namespace when calling
 getElementsByName().
 This was added in M141 and can be removed after M143.
 https://issues.chromium.org/issues/40502558
✅
GetTargetRangesRetargeting
 Performs retargeting on the output of InputEvent.getTargetRanges() to
 prevent leaking nodes in shadow roots.
✅
GetUserMediaEchoCancellationModes—✅
GlobalPrivacyControl—❌
GlobalPrivacyControlApi
 Gates the navigator.globalPrivacyControl JavaScript API.
❌
GlobalPrivacyControlForce—❌
GraphemeClusterBoundsCheck—✅
GroupEffect—❌
HandleShadowDOMInSubstringUtil—✅
HandwritingRecognition—❌
HarfRustShaping—❌
HasUAVisualTransition—✅
HeadingOffset
 TODO(crbug.com/333628468): Enables the headingoffset and
 headingreset attributes, which allow for alternate styles of building
 structured headings. This is being actively prototyped, starting ~M136.
 For more see https://github.com/whatwg/html/issues/5033
❌
HideVideoControlsWhenUnneeded
 Kill switch for setting display: none on the media controls
 container when it is not needed.
 Lands in M147 and can be removed in M149. https://crbug.com/40591804
✅
HighlightsFromPoint—✅
HitTestBorderRadiusForStackingContext
 Fixed https://crbug.com/456164629, so this will be shipped in M150
 and can be removed in M152.
✅
HitTestContainerTransformStateForPreserve3d
 Use container_transform_state instead of local_transform_state when
 computing z-depth for depth ordering in preserve-3d hit testing.
 Fixes incorrect hit-test results for layers without CSS transforms.
 https://crbug.com/464173566
✅
HrefTranslate—✅
HstsTopLevelNavigationsOnly—❌
HTMLAdoptionAlgorithmNewSteps
 Extra steps in HTML Agency Adoption algorithm to remove elements from the
 formatting list when the internal loop reached the maximum number of
 iterations. This shipped in M148 and the flag can be removed in M150.
✅
HTMLAreaElementDisplayNone
 Kill switch for making <area> display:none by default according to the
 HTML rendering specification. https://crbug.com/1231263
✅
HTMLAreaHreflangType—❌
HTMLBodyMarginPixelLength
 Kill switch for parsing <body>, <frame> and <iframe> margin attributes
 as pixel lengths per the HTML rendering rules.
 https://crbug.com/554920796
✅
HTMLCommandActionsV2
 Additional default command/commandfor actions that aren't part of v1 of
 commands. When this flag is disabled only v1 actions (popover and dialog
 defaults) will work.
❌
HTMLCommandElementRemoval
 Remove support for the <command> element from the HTML parsing logic.
 This shipped in M148 and the flag can be removed in M150.
 https://issues.chromium.org/issues/491158089
 NOTE: when this flag is removed, be sure to also remove "command"
 from third_party/blink/renderer/core/html/html_tag_names.json5.
✅
HTMLCommandForScrollCommands
 Adds support for scroll commands such as 'page-up' and 'page-block-end'.
 https://github.com/danielsakhapov/declarative-scroll-commands-for-html-explainer
❌
HTMLElementScrollParent—❌
HTMLInterestForInterestButtonPseudo
 Adds support for the ::interest-button pseudo element, which is a sub-
 feature of the interest invokers feature.
 https://open-ui.org/components/interest-invokers.explainer/
❌
HTMLLinkElementAttributeValueChanges
 Prevents the HTMLLinkElement processing model from being invoked when
 attributes are processed but their value doesn't change. See
 https://crbug.com/41436016.
✅
HTMLParserIgnoreHeadInNoscript
 Kill switch for ignoring head start tags in the "in head noscript"
 insertion mode. https://crbug.com/40775952
✅
HTMLParserTruncatedMarkupDeclaration
 Killswitch for crbug.com/40727112: emit a bogus comment for an
 incomplete markup declaration at end of input instead of dropping the
 rest of the document.
✅
HTMLParserYieldAndDelayOftenForTesting
 A flag, just for local testing to make the
 HTML parser yield more often and take longer to resume.
 This helps when debugging flaky tests caused by parser
 yielding heuristics.
❌
HTMLParserYieldByUserTiming—❌
HTMLPrintingArtifactAnnotations
 When enabled, specifies visual affordances for printing such as headers,
 footers and page numbers, to be PDF annotations.
 See section 14.8.2.2.1 here for info:
 https://opensource.adobe.com/dc-acrobat-sdk-docs/pdfstandards/PDF32000_2008.pdf
✅
HTMLProcessingInstruction
 Parse processing instructions in HTML.
✅
HTMLSwitchAttribute
 Enables the switch attribute on <input type="checkbox">.
 https://open-ui.org/components/switch.attribute.explainer/
❌
HyphenVerticalOrientationFix
 Use orientation segmentation for hyphenation strings in vertical mixed
 text, so characters such as "+=" render sideways instead of upright.
 https://crbug.com/562849567
✅
ICUCapitalization—❌
IgnoreLetterSpacingInCursiveScripts—✅
ImageDataPixelFormat—✅
ImageDocumentUseLayoutWidth—✅
ImageSrcsetReselection
 Srcset images respond to viewport/zoom changes by
 re-selecting the best candidate, including for
 x-descriptors.
 https://crbug.com/41385706
✅
ImplicitRootScroller—❌
IncomingCallNotifications—❌
IncrementalFontTransfer
 Support for https://www.w3.org/TR/IFT/. Tracked at
 https://chromestatus.com/feature/5135917565214720.
❌
InertElementNonEditable—✅
InfiniteCullRect
 If a painting bug no longer reproduces with this feature enabled, then
 the bug is caused by incorrect cull rects.
❌
InheritUserModifyWithoutContenteditable—✅
InitialLetterBlockPositioning
 Initial letter block-axis positioning fixes. See crbug.com/573256240
✅
InlineBlockLineNavigation
 See crbug.com/40695399
✅
InlineContainingBlockSkipOpaque
 See crbug.com/40910996 crbug.com/569803503
❌
InlineCursorSkipNonIfc—✅
InlineScriptCacheHint—❌
InnerHTMLParserFastpathLogFailure
 If enabled, and the inner html parser is unable to successfully
 parse, it will log histograms of why it failed. The logging is
 non-trivial.
❌
InputClientRectWithoutInlinePadding
 Text fields leave the inline padding out of their client rect and
 scroll size, matching where they clip their text. Kill switch.
 https://github.com/w3c/csswg-drafts/issues/13502
✅
InputDisabledHandlerFix
 Prevents running DefaultEventHandler on disabled input elements.
 Enabled in M153, safe to remove in M155.
 https://issues.chromium.org/issues/533188858
✅
InputInSelect
 The HTML parser inserts a </select> end tag before inserting <input>
 when parsing inside of a <select> tag. We want to allow <input> inside
 <select>, but it isn't web compatible enough. This flag allows <input>
 inside <select> but only if there is another open tag in between the
 <input> and the <select>, like <select><div><input>.
 For now, this flag also makes <input> close <select> like it used to
 when the <input> is put directly within an <option> or <optgroup>.
❌
InputMultipleFieldsUI—❌
InputMultipleFieldsUIWithPointerChecks
 Enables InputMultipleFieldsUI on all platforms by tweaking the inner
 fields to be non-focusable and making the whole input element
 focusable for coarse input devices. When this flag is removed, the
 InputMultipleFieldsUI flag can also be removed.
❌
InputTypeColorEnhancements
 Enables the alpha and colorspace content/IDL attributes on
 <input type=color>, allowing alpha and Display P3 color values.
 https://html.spec.whatwg.org/multipage/input.html#dom-input-colorspace
 https://html.spec.whatwg.org/multipage/input.html#dom-input-alpha
 https://chromestatus.com/feature/5736024861966336
❌
InsertBlockquoteBeforeOuterBlock
 Insert a blockquote before a outer block after creating the blockquote
 when indenting a node whose outer block is a blockquote. See
 https://crbug.com/327665597
✅
InstalledApp—✅
InstallElement
 https://chromestatus.com/feature/5152834368700416
❌
InstallOnDeviceSpeechRecognition—✅
IntegrityPolicyScript—✅
InterestEventsNonComposed
 Fixes a bug in the implementation of interest and loseinterest
 events - they should not be composed events.
 This shipped in M149 and can be removed in M151.
✅
IntersectionObserverCompositedAnimationsForceMainFrames
 If enabled, BeginMainFrame will always be requested when there are
 active IntersectionObservers and also active composited animations.
✅
InvertedColors—❌
InvisibleSVGAnimationThrottling—✅
JavaScriptCompileHintsPerFunctionMagicRuntime—❌
JavaScriptImportText—✅
JavaScriptSourcePhaseImports—❌
KeyboardAccessibleTooltip—❌
LabelInteractiveContentCheckBeforeHandler
 Checks interactive content using EventPath captured at
 dispatch start instead of current DOM state. This was
 added in M145 and can be removed after M147.
 https://issues.chromium.org/issues/452084024
✅
LangAttributeAwareFormControlUI—❌
LanguageDetectionAPI—❌
LanguageDetectionAPIForWorkers—❌
LayoutCloneForScrollableOverflowChange—✅
LayoutContainingBlockReturnsBox—✅
LayoutIgnoreMarginsForSticky—❌
LayoutOOFCollectInlinesFix—✅
LazyImageConformantLoadEventTiming
 When enabled, brings chromium into compliance with the resolution of:
   https://github.com/whatwg/html/issues/10671
 This flag can be used to easily revert to the old behavior if the new
 behavior causes breakage; otherwise, it can be removed after M145
 reaches stable.
✅
LazyLoadVideoAndAudio
 Enables the loading attribute for video and audio elements,
 allowing lazy loading similar to images.
 https://crbug.com/469111735
✅
LazyParseInlineStyleSheets
 Defers parsing of declaration blocks in inline <style> elements until
 a rule is first matched, the same treatment network-fetched
 stylesheets already get in StyleSheetContents::ParseAuthorStyleSheet.
 Rules that never match never pay for their declarations.
❌
LeftClickToHandleSuggestion
 Allow triggering the word suggestion from left click.
 From crbug.com/433209485
❌
LegacyAbstractRange
 Keeps the legacy container attributes (startContainer/endContainer)
 on AbstractRange. These attributes move to a new NodeRange interface
 between AbstractRange and Range/StaticRange. This is forced to the
 inverse of the global OpaqueRange runtime flag in
 content/child/runtime_features.cc. Remove when the OpaqueRange flag is
 removed. crbug.com/421421332
✅
LightDismissFromClick
 Makes light dismiss for popovers and dialogs use the click event
 instead of pointerdown and pointerup in order to fix light dismiss
 bugs for touch inputs.
 https://issues.chromium.org/issues/408010435
✅
LineBreakAfterSpaceBeforeOpenTag—✅
LineBreakBidiControlEnter—✅
LineBreakerClearShapeResultOnOverflow
 Clear stale shaping when a line-breaking retry overflows.
 https://crbug.com/559557312
✅
LineBreakerHanKerningEnd
 crbug.com/542686223 crbug.com/568304685
❌
LocalNetworkAccessForWebRTCOptOut
 Reverse origin trial allowing sites to opt out of Local Network Access
 restrictions for WebRTC.
❌
LocalNetworkAccessPermissionPolicy—❌
LocalNetworkAccessWebRTC—❌
LocalNetworkAccessWebSocketsTargetAddressSpace—❌
LockedMode—❌
LoginElement—❌
LongAnimationFrameSourceCharPosition
 Enable sourceCharPosition for the invoke-type resolve-promise
 https://issues.chromium.org/issues/381529126
✅
LongAnimationFrameSourceLineColumn
 Enable retrieving sourceLine and sourceColumn in LoAF implementation.
 https://issues.chromium.org/issues/391417815
❌
LongAnimationFrameSourceLineColumnInterface
 Add sourceLine and sourceColumn to PerformanceScriptTiming
 https://issues.chromium.org/issues/391417815
❌
LongAnimationFrameStyleDuration
 Add styleDuration and layoutDuration to
 PerformanceLongAnimationFrameTiming and forcedStyleDuration and
 forcedLayoutDuration to PerformanceScriptTiming
❌
LongAnimationFrameWorker
 Extends the Long Animation Frame (LoAF) API to Web Workers. Reports a
 long task blocking a worker's event loop as a "long-animation-frame"
 entry, observable from inside the worker. See the loaf-congested-moments
 explainer: https://github.com/WICG/delayed-message-timing
❌
LongPressHitTestInFrame
 https://crbug.com/572893186
✅
LongPressLinkSelectText
 Long press on a link selects the link text instead of bringing up
 context menu. Enabled only on Android AuthView.
❌
LongPressReleasesActiveState
 Kill-switch for releasing the :active state when a touch long-press is
 lifted, and for making context-menu focus hit tests read-only.
 https://crbug.com/358393574
✅
LongTaskFromLongAnimationFrame
 Use LongAnimationFrameMonitor to emit longtask entries
✅
MacCharacterFallbackCache—✅
MacDisableCtrlHomeEnd—✅
MacFontWeightFromOS2
 Read font weight from the OpenType OS/2 table first during macOS font
 family style matching, falling back to AppKit/CoreText weights if the
 OS/2 table is unavailable. See https://crbug.com/543243014.
✅
MachineLearningNeuralNetwork—❌
ManagedConfiguration—✅
ManualText—❌
MarginTrim
 CSS margin-trim property: https://drafts.csswg.org/css-box-4/#margin-trim
✅
MaskDeserializationTimeForCrossOriginMessages—✅
MaskWaitForAllImages—✅
MathMLAnchorElement
 Enables MathMLAnchorElement
❌
MathMLOperatorRTLMirroring
 Enables mirroring for stretchy and large MathML operators when
 the text direction is right to left.
✅
MeasureMemory—✅
MediaCapabilitiesEncodingInfo—❌
MediaCapabilitiesSpatialAudio—❌
MediaCaptionSettingsButton—❌
MediaCapture—❌
MediaCaptureBackgroundBlur—❌
MediaCaptureCameraControls—❌
MediaCaptureConfigurationChange—❌
MediaCaptureVoiceIsolation—❌
MediaControlsExpandGesture—❌
MediaControlsOverlayPlayButton—❌
MediaElementMutedDefaultState—❌
MediaElementVolumeGreaterThanOne—❌
MediaEngagementBypassAutoplayPolicies
 Set to reflect the kMediaEngagementBypassAutoplayPolicies feature.
❌
MediaLatencyHint—❌
MediaPlaybackWhileNotVisiblePermissionPolicy—✅
MediaQueryNavigationControls—❌
MediaSession—✅
MediaSessionChapterInformation—✅
MediaSourceExperimental—❌
MediaSourceExtensionsForWebCodecs—❌
MediaStreamTrackProcessorStats—✅
MediaStreamTrackTransfer—❌
MediaStreamTrackWebSpeech—❌
MemoryConsumerForNGShapeCache
 This feature helps to add memory consumer to NGShapeCache, so that
 the cached shape results would be cleared once exceeding the memory limit.
❌
MenuElements—❌
MessagePortCloseEvent—❌
MiddleClickAutoscroll
 This is enabled by default on Windows only. The only part that's
 "experimental" is the support on other platforms.
❌
MixedContentAutoupgradesUseIsMixedContentRestrictedInFrame
 Killswitch for crbug.com/40062462 fix.
✅
MobileLayoutTheme—❌
ModifyParagraphCrossEditingoundary—✅
ModuleMapDoNotCacheFailedFetch
 Stops caching failed module fetches (network error, non-ok status, or
 MIME type mismatch), so a later import re-fetches instead of reusing the
 failure.
 https://html.spec.whatwg.org/C/#fetch-a-single-module-script
 https://crbug.com/534781954
✅
ModulePreloadReferrer
 ModulePreloadReferrer enables modulepreload to send proper referrer
 headers as specified in the HTML spec.
 https://crbug.com/441933555
✅
ModulePreloadStyleJson
 https://crbug.com/466888680
✅
MojoJS—❌
MojoJSTest
 MojoJSTest is used exclusively in testing environments, whereas MojoJS
 may also be used elsewhere.
❌
MonospaceGlyphCompaction
 Optimization for monospace text.
❌
MoveEndingSelectionToListChild
 Move the selection to the last position in the list item. See
 https://crbug.com/331841851
✅
MoveParagraphsPreserveInlineStructure
 https://issues.chromium.org/issues/41015847
 This will be shipped in M151, and it can be removed in M153.
✅
NastaliqScript
 Support Nastaliq script. crbug.com/569667449
❌
NavigateEventDeferCrossDocumentCommit—❌
NavigationEventTiming—❌
NavigationSourcePseudoClass
 NavigationState class and the :navigation-source CSS pseudo-class.
✅
NavigationTimingRedirectTimingViaTAO
 Exposes navigation redirect timing (redirectCount, redirectStart and
 redirectEnd) for cross-origin redirect chains when every redirect opts
 in to the navigation's destination origin via Timing-Allow-Origin and
 the navigation is not a no-referrer navigation.
 https://github.com/whatwg/fetch/pull/1931
 https://github.com/whatwg/html/pull/12513
✅
NavigationTypeAndPhase
 Support <navigation-type-test> and <navigation-phase-test>.
❌
NavigatorContentUtils—❌
NetInfoConstantType—❌
NetInfoDownlinkMax—❌
NeutralKeyframeEasingCompliance
 See crbug.com/567611289
 Per https://www.w3.org/TR/web-animations-1/
 #the-effect-value-of-a-keyframe-animation-effect:
 Keyframes not affecting the target property are to be removed prior
 to populating interval endpoints. Blink's longstanding behavior was
 not spec-compliant. Introducing a kill-switch to allow a quick revert
 should this be a breaking change for sites.
✅
NewAnimationCompositingChecking
 See crbug.com/521921832
 Any potential behavioral changes excepting bugfixes from the V2 implementation (including
 changes to when the histogram is reported, like early-outs in Animation::PreCommit) are behind
 this flag, for safety and consistent reporting on the V1 enum while it is still supported.
❌
NewAnimationDispositionReporting—❌
NewHTMLSettingMethods
 https://chromestatus.com/feature/5054329641893888
 streamHTML, appendHTML, etc.
✅
NoExtendSelectionToUserSelectNoneOutOfFlow
 Fix for https://crbug.com/482862753
✅
NoExtendSelectionToUserSelectNoneOutOfFlowUnlessEditable
 Fix for https://crbug.com/522844903, a regression from
 crrev.com/c/7617189. Gated behind its own flag rather than
 changing NoExtendSelectionToUserSelectNoneOutOfFlow's behavior.
✅
NoFontAntialiasing
 This turns off all font antialiasing for tests unless it is
 explicitly required and enabled using the
 "--enable-font-antialiasing" flag like in the case of
 "virtual/text-antialias/" virtual test suite.
 crbug.com/339041663
❌
NoIdleEncodingForWebTests—❌
NoNbspForInterElementSpaceOnCopy
 When copying, a lone space between two inline elements is kept as an
 ordinary breaking space instead of being converted to a non-breaking
 space. Spaces at the selection edges and runs of two or more spaces are
 still converted to non-breaking spaces. See https://crbug.com/448047353
✅
NonEmptyBlockquotesOnOutdenting
 Doesn't insert empty blockquotes on outdenting a blockquote. See
 https://crbug.com/323960902
✅
NonEmptyVisibleTextSelectionForTextFragment—✅
NonStandardAppearanceValueSliderVertical
 TODO(crbug.com/1426629): This feature enables the deprecated value
 slider-vertical. Disable this feature to stop parsing or allowing these
 values.
 https://drafts.csswg.org/css-ui-4/#appearance-switching
✅
NormalizeLineEndingsInInsertText
 Normalizes CRLF and standalone CR to LF in execCommand("insertText")
 for consistent newline handling in contenteditable elements.
 See https://crbug.com/41289410
✅
NoSynchronousThrowForCrossOriginBlockedWorker
 Dispatch an error event for the cross-origin violation for the worker
 script URL fetching, instead of throwing error synchronously on worker
 construction.
 See https://github.com/whatwg/html/issues/337
❌
NotificationConstructor—❌
NotificationContentImage
 NotificationContentImage is not available in all platforms
 The Notification Center on Mac OS X does not support content images.
❌
Notifications—✅
NotificationTriggers—❌
NotifySelectionControllerOnUnchangedSelection
 Notify selection controller of selection changes even when the new
 selection matches the old selection, keeping the selection state in
 sync. This flag ships in M151 and can be removed in M153.
✅
NumberInputFullWidthChars—✅
OfflineAudioContextIncrementalRendering—❌
OffscreenCanvasGetContextAttributes—✅
OffsetMappingReuseFullWidthSpaceFix
See crbug.com/512385682
✅
OffsetPathTransformUpdateFix
 Kill switch for a fix to offset-path transform invalidation for
 https://crbug.com/463409688.
✅
OmitBlurEventOnElementRemoval—❌
OmitSubframeDetachmentEventsOnRemoval
 iframes send pagehide/unload/visibilitychange when removed.
 This not spec-compliant, but might have web-compat consequences.
 This flag omits firing those events on element removal.
❌
OnDeviceWebSpeechAvailable—✅
OnDeviceWebSpeechQuality—✅
OofLayoutRequiresSideEffects
 Skip layout of all out-of-flow positioned elements if side-effects are
 disabled. See DisableLayoutSideEffectsScope.
✅
OpaqueRange
 The OpaqueRange interface provides a live AbstractRange subtype
 for encapsulated content within <textarea> and <input> elements.
 "This can be removed in M155. crbug.com/421421332
✅
OpenPopoverInvokerRestrictToSameTreeScope
 Restrict popover invoker lookup to the same TreeScope as the element.
 This will be shipped in M142, and it can be removed in M144.
 See https://issues.chromium.org/issues/443031270.
✅
OptionDisablednessCheckAncestors
 Makes option elements match :enabled or :disabled based on whether
 their ancestor select element is disabled.
 https://github.com/w3c/csswg-drafts/issues/13383
 https://issues.chromium.org/issues/490082172
 Enabled in M149, modified in M151, safe to remove in M153.
✅
OrientationEvent—❌
OriginAPI—✅
OriginIsolationHeader—✅
OriginPolicy—❌
OriginTrialsSampleAPI
 Define a sample API for testing integration with the Origin Trials
 Framework. The sample API is used in both unit and web tests for the
 Origin Trials Framework. Do not change this flag to stable, as it exists
 solely to generate code used by the sample API implementation.
❌
OriginTrialsSampleAPIBrowserReadWrite
 As above. Do not change this flag to stable, as it exists solely to
 generate code used by the origin trials sample API implementation.
❌
OriginTrialsSampleAPIDependent
 As above. Do not change this flag to stable, as it exists solely to
 generate code used by the origin trials sample API implementation.
 TODO(yashard): Add tests for this feature.
❌
OriginTrialsSampleAPIDeprecation
 As above. Do not change this flag to stable, as it exists solely to
 generate code used by the origin trials sample API implementation.
❌
OriginTrialsSampleAPIExpiryGracePeriod
 As above. Do not change this flag to stable, as it exists solely to
 generate code used by the origin trials sample API implementation.
❌
OriginTrialsSampleAPIExpiryGracePeriodThirdParty
 As above. Do not change this flag to stable, as it exists solely to
 generate code used by the origin trials sample API implementation.
❌
OriginTrialsSampleAPIImplied
 As above. Do not change this flag to stable, as it exists solely to
 generate code used by the origin trials sample API implementation.
❌
OriginTrialsSampleAPIInvalidOS
 As above. Do not change this flag to stable, as it exists solely to
 generate code used by the origin trials sample API implementation.
❌
OriginTrialsSampleAPINavigation
 As above. Do not change this flag to stable, as it exists solely to
 generate code used by the origin trials sample API implementation.
❌
OriginTrialsSampleAPIPersistentExpiryGracePeriod
 As above. Do not change this flag to stable, as it exists solely to
 generate code used by the origin trials sample API implementation.
❌
OriginTrialsSampleAPIPersistentFeature
 As above. Do not change this flag to stable, as it exists solely to
 generate code used by the origin trials sample API implementation.
❌
OriginTrialsSampleAPIPersistentInvalidOS
 As above. Do not change this flag to stable, as it exists solely to
 generate code used by the origin trials sample API implementation.
❌
OriginTrialsSampleAPIPersistentThirdPartyDeprecationFeature
 As above. Do not change this flag to stable, as it exists solely to
 generate code used by the origin trials sample API implementation.
❌
OriginTrialsSampleAPIThirdParty
 As above. Do not change this flag to stable, as it exists solely to
 generate code used by the origin trials sample API implementation.
❌
OutlineDrawAutoStyleZeroWidth—✅
OverlayGlobalRuleRemoval
 Improves the performance of the global overlay:none!important UA style
 rule by replacing the normal UA style rule with other things which
 result in the same behavior. Added in M147, should be safe to remove
 in M150.
✅
OverlayProperty
 Enables the CSS overlay property. When this flag is disabled, top
 layer exit animations will work without the need for using the overlay
 property.
✅
OverscrollAreas
 https://chromestatus.com/feature/5261280285949952
❌
PagePopup—❌
PagePopupCopyPaste—✅
PageSwapEvent—✅
PaintCaretAfterInnerEditorPaint—✅
PaintHoldingForIframes—✅
PaintUnderInvalidationChecking—❌
Parakeet
 PARAKEET ad serving runtime flag/JS API.
❌
PartitionVisitedLinkDatabaseWithSelfLinks—❌
PasswordReveal
 This is to add an option to enable the Reveal button on password inputs while waiting ::reveal gets standardized.
❌
PaymentApp—❌
PaymentHandlerStaticCustomSize
 Lets a payment app set the size of its Payment Handler window through
 the preferredSize option of PaymentRequestEvent.openWindow().
❌
PaymentLinkDetection
 https://chromestatus.com/feature/5198846820352000
✅
PaymentMethodChangeEvent—✅
PaymentRequest
 PaymentRequest is enabled by default on Android
❌
PaymentRequestNonFullyActiveDocumentCheckInvalidStateError—✅
PerformanceManagerInstrumentation—❌
PerformanceMarkCustomUserTimingFromSubframe
 Sends custom user timing events in subframes to the browser process.
 crbug.com/467177770 for more details.
❌
PerformanceMarkFeatureUsage
 Enables performance.mark('mark_feature_usage'): crbug.com/1517170
❌
PeriodicBackgroundSync—✅
PerMethodCanMakePaymentQuota—❌
PermissionsPolicyAPI—❌
PermissionsPolicyForSharedWorkers—❌
PermissionsRequestRevoke—❌
PersistentWidgetAPI
 Enables the <persistentwidget> element, which is like an <iframe> but
 can stay alive without reloading when its opener/embedder navigates
 from one same-origin document to another.
 There are checks for this flag in content/browser, which means that
 setting status to "experimental" would not actually enable this
 feature, it has to be "stable" in order for it to actually get enabled
 in the browser process. Manual and automated tests must pass the
 --enable-features=PersistentWidgetAPI command line flag to the
 browser.
❌
PNaCl
 This is a reverse OT used for a phased deprecation.
 https://crbug.com/918374
❌
PointerLockOnAndroid
 Flag for enabling the pointer lock API on Android
✅
PointerRawUpdateOnlyInSecureContext
 https://crbug.com/404479704
✅
PopoverHintNestedShowException
 Makes showPopover() throw an exception instead of just logging a console
 message when calling showPopover() within another popover hide/show
 operation. https://crbug.com/527495812
✅
PopoverHintNewBehavior
 Simplifies the behavior and stacking interactions of popover=hint and
 popover=auto. See https://crbug.com/499019927.
 This shipped in M150, was disabled via Finch, and was re-enabled in
 M151. The behavior was tweaked slightly in M153, and milestones
 now happen twice as quickly, so the flag can be removed in M157.
✅
PopupWidgetRequiresUserActivation
 Kill switch for requiring and consuming transient user activation in
 the browser process when creating a form-control popup widget,
 guarding against compromised renderers opening popups without a user
 gesture.
 See https://crbug.com/506152584.
✅
PositionOutsideTabSpanCheckSiblingNode—✅
PositionVisibilityIgnoreNonClipAncestors
 Kill switch for https://crbug.com/448173938 which changes position
 visibility to ignore non-clipping ancestors.
✅
PositionVisibilitySingularValues
 Enables the "singular" versions of two values for the CSS
 position-visibility property: anchor-valid and anchor-visible.
 See crbug.com/526682332.
✅
PotentialPermissionsPolicyReporting—✅
PreciseMemoryInfo—❌
PreferDefaultScrollbarStyles
 Adds a web setting to disable CSS ScrollbarColor, ScrollbarWidth, and
 legacy ::-webkit-scrollbar* pseudo-element styling.
❌
PreferNonCompositedScrolling
 Prefer not using composited scrolling. Composited scrolling will still
 be used if there are other reasons forcing compositing. For consistency,
 any code calling Settings::GetPreferCompositingToLCDTextEnabled() should
 ensure that this flag overrides the setting.
❌
PreferredAudioOutputDevices—❌
PrefersReducedData—❌
PrefetchAndPrerenderActivationBeacon—❌
PreloadLinkRelDataUrls
 Used to allow preloading data: URLs with link rel=preload.
 https://crbug.com/348442535
✅
PreloadScannerImprovements
 Kill switch for spec-compliant handling of HTML <image> and SVG/MathML
 foreign content in the HTML preload scanner. Ships in M155 and can be
 removed in M158. https://crbug.com/40728681
✅
PrePaintBoxInvalidatorUsesFragments—✅
Prerender2
 Used to allow chrome://flags to turn off prerendering. (Without using
 the user-facing preloading settings page to turn off other
 preloading.) See https://crbug.com/1494471.

 It also has some feature params defined throughout the codebase.
✅
Prerender2CrossOriginIframes
 Used to allow prerender cross-origin iframes with an opt-in response
 header.
 https://chromestatus.com/feature/5112398709129216
 https://crbug.com/440387014
❌
PrerenderActivationByFormSubmission
 Used to allow prerender activation by form submission.
 See https://crbug.com/346555939.
✅
PrerenderUntilScript—❌
Presentation—✅
PreserveHtmlEquivalentTagsInTypingStyle—✅
PreserveUnfocusedSelectionCache
 When enabled, a text control's cached selection is preserved while the
 control is not focused or has a post-layout selection restore pending,
 instead of being refreshed from the live DOM selection. Kill switch
 for https://crbug.com/40884623. This feature ships in M154 and can be
 removed in M156.
✅
PreventTextSelectionJump
 When enabled, fixes selection jumping when drag-selecting out of
 a float box boundary.
 See https://crbug.com/41340914
✅
PrivateNetworkAccessNullIpAddress—❌
PrivateStateTokens—✅
PrivateStateTokensAlwaysAllowIssuance
 Always allow trust token issuance (so long as the base::Feature
 is enabled). Used for testing; circumvents a runtime check that,
 if this RuntimeEnabledFeature is not present, guarantees the origin
 trial is enabled.
❌
ProfilerAPI—✅
ProfilerAPIForDedicatedWorker
 When enabled, dedicated workers can use profiler API
❌
ProgrammaticScrollPromise
 Promisify programmatic scroll methods in Element and Window.
 https://crbug.com/41406914
✅
ProgressEventInServiceWorker
 Expose ProgressEvent in service workers.
 https://xhr.spec.whatwg.org/#interface-progressevent
 https://crbug.com/332663431
✅
PropagateOverscrollBehaviorFromRoot
 Propagate overscroll-behavior from the root element rather than the
 body element. crbug.com/41453796
✅
PseudoElementsFocusable
 Allowing pseudo-elements to have focus.
✅
PseudoElementsHitTestable
 Support hit-testing for ::after, ::before, ::marker
 (e.g. for CSSPseudoElement).
✅
PseudoElementsHoverable
 Support :hover on ::after, ::before, ::marker.
❌
PushMessageDataBytes—✅
PushMessaging—✅
PushMessagingSubscriptionChange—❌
QuotaExceededErrorUpdate
 ChromeStatus: https://chromestatus.com/feature/6194847180128256
✅
RadioButtonCircularBorderRadius
 Gives a natively painted input[type=radio] a 50% border radius so that
 box-shadow and outline follow the circle the theme paints instead of
 the square border box. See crbug.com/40877887.
✅
RangeBoundaryFastPath
 Sets Range boundaries relative to a sibling node lazily, avoiding the
 O(n) Node::NodeIndex()/NodeTraversal::ChildAt walks so that selectNode()
 is O(1) instead of O(n). See crbug.com/515812864.
✅
RasterInducingScroll—✅
RateLimitPointerLockRequests
 Used as a kill switch in case the rate limiting causes issues.
✅
ReadableStreamBYOBReaderReadMinOption
 Enables support for a 'min' option in ReadableStream BYOBReader.read(),
 allowing callers to specify the minimum number of bytes to be read into
 the buffer before resolving the read request.
 https://chromestatus.com/feature/6396991665602560
✅
ReadClipboardDataOnClipboardItemGetType
 getType() on a ClipboardItem triggers the
 clipboard read operation, implementing lazy loading for clipboard data.
 Chrome status entry - https://chromestatus.com/feature/5203433409871872
✅
ReadingFlowWithSlots
 Enables correct reading-flow ordering when slots are involved.
 This will be shipped in M148, and it can be removed in M150.
 See https://issues.chromium.org/issues/452981723.
✅
ReadOnlyTextControlSelection
 Enables caret visibility and keyboard selection/navigation for
 readonly text controls (input and textarea).
 https://issues.chromium.org/issues/40801366
✅
RecheckParentDuringNodeVectorInsertion
 Shipping in M148, revised in M151, so should be removed around M153.
✅
ReduceAcceptLanguage
 If enabled, both Accept-Language HTTP header and JavaScript getter will
 be reduced.
❌
ReduceUserAgentMinorVersion
 If enabled, the minor version of the User-Agent string will be reduced.
 This User-Agent Reduction feature has been enabled starting from M101,
 but we still keep this flag for future phase tests.
✅
RegionCapture—❌
RelatedWebsitePartitionAPI—❌
ReleasePaintHoldingWithoutContentfulPaint
 Kill switch for https://crbug.com/376516545.
 Releases paint holding (deferred compositor commits) early for pages
 that finish parsing and produce a first paint but never reach First
 Contentful Paint (e.g. background-color only pages).
✅
RelOpenerBcgDependencyHint—❌
RemotePlayback—✅
RemotePlaybackBackend—❌
RemoveCharsetAutoDetectionForISO2022JP
 This feature acts as a kill switch for ISO-2022-JP auto-detection.
 This will be shipped in M139, and it can be removed in M141.
 See https://chromestatus.com/feature/6576566521561088.
✅
RemoveChildrenInReplaceChildren
 Optimize ReplaceChildren() to use RemoveChildren() for batch removal
 instead of looping RemoveChild(). This batches style invalidations
 improving performance.
✅
RemoveCollapsedPlaceholderForContentEditable
 After paste operation removes the placeholder <br> tag
 that gets inserted in contenteditable as placeholder for newline
✅
RemoveDanglingMarkupInTarget—✅
RemoveDataUrlInSvgUse—✅
RemoveNonAllowlistedCreateEvent
 Remove non-allowlisted event interfaces from document.createEvent().
 This was added in M148 and can be removed after M150.
 https://chromestatus.com/feature/5095987863486464
 https://issues.chromium.org/issues/41228793
✅
RemoveScrollNodeWorkaround
 See https://issues.chromium.org/issues/40779139
✅
RemoveVisibleSelectionInDOMSelection
 See https://issues.chromium.org/issues/41311101
❌
RenderPriorityAttribute
 The renderpriority attribute feature.
 https://github.com/WICG/display-locking/blob/main/explainers/update-rendering.md
❌
ReplaceChildrenWithFragmentFastPath
 When enabled, avoids calling RemoveChildren() in
 ReplaceChildrenWithFragment() if the container is already empty.
✅
ReplaceCompositionActualInsertedLength
 https://crbug.com/567626030
✅
ReplacedNormalFlowStackingInlinePaint
 Kill switch for painting non-SVG replaced normal-flow stacking
 contexts inline with their siblings.
 This was set to experimental due to crbug.com/532229489.
❌
ReportFirstFrameTimeAsRenderTime—❌
ReportLayoutShiftRectsInCssPixels—✅
RequestIsReloadNavigation—✅
ResourceTimingInitiator—❌
ResourceTimingUseCORSForBodySizes—❌
RespectOverscrollBehaviorForScrollBubbling—✅
ResponsiveIframes—✅
RestrictGamepadAccess—❌
RestrictOwnAudio—✅
RootScrollbarFollowsBrowserTheme
 If enabled, makes the root scrollbars' foreground elements follow the
 browser
❌
RouteMatching
 Route matching, @route CSS rule.
 https://chromestatus.com/feature/4771962874363904
❌
RtcAlwaysNegotiateDataChannels—✅
RtcAudioJitterBufferMaxPackets—❌
RTCConfigurationIceTransports
 Non-standard RTCConfiguration.iceTransports alias. Off by default
 (alias removed). Enable via Finch to restore if sites break.
 https://crbug.com/488071544
❌
RTCDataChannelPriority—❌
RTCDiagnosticLogging—❌
RTCEncodedAudioFrameConstructor—❌
RTCEncodedFrameAudioLevel—✅
RTCEncodedFrameSetMetadata—❌
RTCEncodedFrameTimestamps—✅
RTCEncodedSource—❌
RTCEncodedVideoFrameAdditionalMetadata—❌
RTCEncodedVideoFrameConstructor—❌
RTCJitterBufferTarget
 Enables the use of jitterBufferTarget attribute in WebRTC.
 Spec: https://w3c.github.io/webrtc-extensions/#dom-rtcrtpreceiver-jitterbuffertarget
✅
RTCLegacyCallbackBasedGetStats
 Legacy callback-based getStats() has limited availability unless this
 Deprecation Trial is enabled.
 TODO(https://crbug.com/822696): Remove when origin trial ends.
❌
RTCLegacyDiagnosticLogging—❌
RTCRtpEncodingParametersCodec
 Enables the use of |RTCRtpEncodingParameters.codec|
✅
RtcRtpHeaderEncryptionPolicy—❌
RTCRtpScaleResolutionDownTo—✅
RTCRtpScriptTransform—✅
RTCRtpTransport—❌
RTCStatsRelativePacketArrivalDelay—❌
RTCSvcScalabilityMode
 Enables the use of SVC scalability mode in WebRTC.
 Spec: https://w3c.github.io/webrtc-svc/
✅
RubyTextDecorationSpacing
 Places ruby annotations clear of the base's underline or overline.
 https://drafts.csswg.org/css-ruby-1/#ruby-text-decoration
✅
RunMicrotaskBeforeXmlScript
 Runs a microtask checkpoint before prepare script in
 XML Parser. This was added in M148 and can be removed
 after M150.
 https://issues.chromium.org/issues/439639184
✅
RunSnapshotPostLayoutStateSteps
 HTML event loop invoking 'Run snapshot post-layout state steps' from
 the CSSOM View per spec proposal.
✅
SanitizeIDNEmailFormInput
 https://issues.chromium.org/issues/429490608
✅
SanitizerAPI
 Spec: https://wicg.github.io/sanitizer-api/
 Tracking bug: crbug.com/356601280
✅
ScopedViewTransitionSizeContainment—✅
ScoreLineBreakerAbort—✅
ScreenDetailedHdrHeadroom
 https://github.com/w3c/window-management/issues/149
❌
ScriptBasedOnUnicodeBlock
 crbug.com/406917902
✅
ScriptedSpeechRecognition
 WebSpeech API with both speech recognition and synthesis functionality
 is not fully enabled on all platforms.
✅
ScriptedSpeechSynthesis—✅
ScrollAnchorSerializationUseParentForTextNode
 Use parent element for text node to compute relative offset when
 serializing scroll anchor to ensure consistency with
 ComputeUniqueSelector()
✅
ScrollAxisLock
 https://crbug.com/479472367
✅
ScrollbarColor—✅
ScrollbarGutterBugFix—✅
ScrollbarWidth—✅
ScrollIntoViewAlignAuto
 https://github.com/w3c/csswg-drafts/issues/9576
❌
ScrollIntoViewNearest—✅
ScrollIntoViewNoInitialFocusNavigationStartingPoint
 Prevents scrollIntoView() from creating the initial sequential focus
 navigation starting point before one has been established.
 https://crbug.com/537801211
✅
ScrollIntoViewRootFrameViewportBugFix
 TODO(355460994): Remove after M129.
 scroll into root frame didn't take scrollbar and borders into account,
 while this is fixed, to avoid any web compat issues we have this killswitch.
✅
ScrollPerformanceTiming—❌
ScrollTimelineCurrentTime
 Separate flag for crbug.com/1426506 (getCurrentTime API change) which
 is expected to land after the initial launch of ScrollTimeline.
❌
ScrollTimelineNamedRangeScroll
 https://github.com/w3c/csswg-drafts/issues/9367#issuecomment-1854280461
✅
ScrollTopLeftInterop
 Implements documentElement.scrollTop/Left and bodyElement.scrollTop/Left
 as per the spec, matching other Web engines.

 This flag can't be removed until the Android min SDK version is 28
 (i.e., 'P') or later.  See AWSettings.setScrollTopLeftInteropEnabled
 and its caller.
✅
ScrollToTextFragmentDirectiveLimit
 Limits the number of scroll-to-text-fragment directives parsed per URL.
✅
ScrollVisibilityHiddenScrollers—✅
SearchTextHighlightPseudo
 Allows CSS styling of browser search results.
 https://issues.chromium.org/issues/339298411
 https://chromestatus.com/feature/5195073796177920
✅
SecurePaymentConfirmation
 SecurePaymentConfirmation has shipped on some platforms, but its
 availability is controlled by the browser process (via the
 SecurePaymentConfirmationBrowser feature), as it requires browser
 support to function. See //content/public/common/content_features.cc

 The status is set to 'test' here to enable some WPT tests that only
 require blink-side support to function.
❌
SecurePaymentConfirmationAvailabilityAPI
 SecurePaymentConfirmationAvailabilityAPI needs to be kept as a runtime
 flag in order to disable the API in WebView.
✅
SecurePaymentConfirmationCapabilities—✅
SecurePaymentConfirmationDebug—❌
SecurePaymentConfirmationExtensionsDisallowForThirdParties—✅
SecurePaymentConfirmationOptOut—✅
SelectAnchorInViewport
 Make select popup anchor stay within web contents to prevent
 overlapping browser UI.
 TODO(https://issues.chromium.org/issues/511869411): Remove this flag
 after it has been shipped for long enough.
 Shipped in M150, changed slightly in M151, disabled in M151-M152,
 re-enabled in M153, safe to remove in M155.
✅
SelectAudioOutput
 SelectAudioOutput API
 https://chromestatus.com/feature/5164535504437248
❌
SelectedcontentelementAttribute
 The selectedcontentelement attribute is for connecting select elements
 to arbitrary <selectedcontent> elements.
 https://github.com/openui/open-ui/issues/1063
 https://github.com/whatwg/html/issues/12227
❌
SelectedcontentMultiple
 Makes the <selectedcontent> element work in <select multiple> by
 cloning the contents for each option which is selected into the
 <selectedcontent> element.
 https://issues.chromium.org/issues/483769482
❌
SelectedcontentSpec2
 Makes minor tweaks to edge cases with the <selectedcontent> element.
 The prior set of spec-driven changes to the selectedcontent element
 were called "SelectedcontentSpec", so this one is called
 "SelectedcontentSpec2".
 https://github.com/whatwg/html/pull/12263
 Enabled in M156, can be removed in M159.
✅
SelectionAndFocusedVisiblePositionMatch
 See https://crbug.com/40664519
 Disabled due to UI freeze issues, see https://crbug.com/448833953.
❌
SelectionCollapsedDirectionNone—✅
SelectionEditingBoundarySlottedContent
 Allows a selection to extend into the light-DOM content assigned to a
 <slot>, e.g. the content of an open <details>, instead of clamping the
 focus at the slot's shadow host in EditingBoundaryAdjuster.
 See https://crbug.com/477613569
✅
SelectionFocusAffinity
 Fixes selection focus affinity at soft wrap boundaries. When the focus
 of a range selection is at a soft wrap boundary (a DOM offset shared by
 two visual lines), this ensures the correct affinity is used based on
 the selection direction.
 See https://crbug.com/40980028
✅
SelectionHandleWithBottomClipped
 Killswitch M141.
✅
SelectionRemoveRangeNotFoundError
 https://issues.chromium.org/issues/40502558
✅
SelectionSetBaseAndExtentNonNullNode
 https://issues.chromium.org/issues/40502558
❌
SelectivePermissionsIntervention
 See https://chromestatus.com/feature/4811835974615040
✅
SelectRemoveOverflowHidden
 Removes the forced overflow:hidden rules on the select element's
 InnerElement unless the author specifies text-overflow:ellipsis. May
 cause text to overlap with the dropdown indicator.
 https://issues.chromium.org/issues/40805967
✅
SelectUsesFlatTree
 Makes <select> discover its options, optgroups, separators, and
 customizable trigger button through the flat tree.
 See https://chromestatus.com/feature/5127427618635776
❌
SendBeaconThrowForBlobWithNonSimpleType—✅
SendEarlyLastBeginMainFrame—✅
SendSlotChangeSignalAfterNodeInserted
 SlotChange signal is sent after node insertion is complete,
 ensuring that slot fallback content is handled correctly.
 This was added in M145 and can be removed after M147.
 https://issues.chromium.org/issues/40150299
✅
SensorExtraClasses—❌
SeparateDeferModuleScriptTasks
 Separate defer and module script execution into individual tasks
 to comply with HTML spec requirement to "spin the event loop" between
 each script execution. This prevents long tasks and improves responsiveness.
 https://crbug.com/40894694
✅
SequentialFocusPrimitives
 Exposes the Focusable interface, DocumentOrShadowRoot.activeFocusable,
 CSSPseudoElement.focus(), and sequential focus navigation primitives.
 https://crbug.com/565786176
❌
SequentialFocusPrimitivesShadowRoots
 Adds the shadowRoots option to the Focusable constructors (and the
 constructor that takes a Focusable), which exposes focusable items
 inside those shadow trees.
 https://crbug.com/565786176
❌
Serial—✅
SerializeInvalidSelectorsInForgivingSelectorList
 Serialize invalid selector text in the forgiving selector list.
 https://github.com/w3c/csswg-drafts/issues/8356
❌
SerializeViewTransitionStateInSPA—❌
SerialPortConnected—❌
ServiceWorkerBackgroundSyncInDedicatedWorker
 Support for Service Worker background sync APIs in Dedicated Workers.
 See https://chromestatus.com/feature/6497653025931264
 See https://issues.chromium.org/issues/40364838
❌
ServiceWorkerClientLifecycleState—❌
ServiceWorkerCodeCache
 V8 Code Cache for resource requests passing through Service Worker.
✅
ServiceWorkerCodeCacheHashing
 Enforces SHA-256 source hash verification for V8 code caches on
 scripts fetched via Service Worker (crbug.com/547815507).
✅
ServiceWorkerInDedicatedWorker
 Support for Service Worker APIs in Dedicated Workers.
 See https://chromestatus.com/feature/6497653025931264
 See https://issues.chromium.org/issues/40364838
❌
ServiceWorkerScriptEncoding
 Killswitch for crbug.com/552757015.
✅
ServiceWorkerStaticRouterTimingInfo—✅
SetHTMLCanRunScripts—✅
SetSequentialFocusStartingPoint—❌
SetShape—❌
ShadowRootAdoptedStyleSheet
 https://crbug.com/448174611
❌
ShadowRootNamespaceCheck
 Only allow attachShadow() on elements with the HTML namespace.
 See crbug.com/521896365
❌
ShadowRootReferenceTarget
 Reference Target allows IDREF attributes to refer inside Shadow DOM.
 crbug.com/346835896
✅
ShadowRootReferenceTargetAriaOwns
 If enabled, Reference Target will support aria-owns.
 https://github.com/WICG/webcomponents/issues/1091
❌
ShadowRootSlotAssignment
 Lets declarative shadow roots opt into manual slot assignment.
 crbug.com/493315747
✅
SharedArrayBuffer—❌
SharedArrayBufferUnrestrictedAccessAllowed—❌
SharedWorker—✅
SharedWorkerExtendedLifetime
 If enabled, SharedWorker supports extendedLifetime
 https://github.com/whatwg/html/issues/10997
 https://issues.chromium.org/issues/400473072
✅
SideRelativeBackgroundPosition—✅
SignatureBasedInlineIntegrity—❌
SingleAxisScrollContainers—✅
SingleAxisScrollContainersForScrollSnap—❌
SkipAd—✅
SkipCallbacksWhenDevToolsNotOpen
 If enabled, only call ResourceLoadObserver callbacks if the DevTools
 panel is open.
❌
SkipCompositingStaticBackdropFilterAnimation
 Kill switch for https://crbug.com/569098933. Doesn't composite a
 backdrop-filter animation whose value can't change (e.g. the view
 transition group animation from none to the underlying none),
 which would require render surfaces for the animating element and for
 its backdrop root. The animation still makes the element a stacking
 context.
✅
SkipEventCapture
 Improves performance of event dispatching by skipping the capture
 phase if there are no capture listeners registered on the page.
✅
SkipPaintInvalidationWhileStayingInvisible
 Kill switch for crbug.com/41254682: skips paint invalidation for
 paint-only style changes (e.g. animation frames) on objects that were
 and stay visibility:hidden.
✅
SkipStaleUndoStepsInIdleSpellCheck
 crbug.com/517761566
✅
SkipTickingStaticAnimations
 Kill switch for https://crbug.com/569098933. Doesn't tick an animation
 on the main thread if none of its values can change while it's in play
 (e.g. the view transition mix-blend-mode: plus-lighter animation),
 even if it can't run on the compositor for another reason, such as
 affecting an !important property.
✅
SkipTouchEventFilter
 Skips the browser touch event filter, ensuring that events that reach
 the queue and would otherwise be filtered out will instead be passed
 onto the renderer compositor process as long as the page hasn't timed
 out. If skip_filtering_process is browser_and_renderer, also skip the
 renderer cc touch event filter, ensuring that events will be passed
 onto the renderer main thread.
✅
SkipUnselectableElementsInParagraphBoundary
 See crbug.com/446113738.
✅
SmallerViewportUnits—✅
SmartCard—❌
SmartZoom—❌
SnapshotScrollTimelinesPostLayout
 Snapshot scroll-timelines post layout only. See
 RunSnapshotPostLayoutStateSteps flag.
❌
SortedLayoutShiftSourcesByImpactArea—✅
SourceSpecificMulticastInDirectSockets
 Source-specific multicast support in the Direct Sockets API. Not
 depends_on: ["DirectSockets"] — DirectSockets is enabled per-context
 (isolated contexts) rather than via the static flag, so a static
 dependency would keep this feature off everywhere it matters. Actual
 exposure is gated by MulticastController's Exposed() clause.
❌
SpatNavUsesCursorInheritance
 Whether spatial navigation should use cursor inheritance to exclude
 nodes where cursor is inherited. Kill-switch that can be remove once
 the change goes through a stable release.
✅
SpeakerSelection—❌
SpecCompliantXmlMimeTypes
 Enables spec-compliant suffix matching for XML MIME types
 (e.g., text/html+xml) by allowing *+xml patterns.
 https://mimesniff.spec.whatwg.org/#xml-mime-type
 https://crbug.com/362282752
❌
SpeculationMeasurement
 Exposes speculation measurement data (preloads, prefetches, prerenders)
 on performance.speculations.
❌
SpeculationRulesModerateViewportHeuristicsControl
 Exposes author controls for the mobile "moderate" eagerness viewport
 heuristic via a ruleset-level "moderate_viewport_heuristics" key in
 speculation rules. Android-only, since the heuristic only runs on
 Android. Third-party tokens are allowed so that scripts injecting
 speculation rules cross-origin (e.g. performance libraries) can opt in.
 https://groups.google.com/a/chromium.org/g/blink-dev/c/YYBd-eksiE8
❌
SpellCheckChunking—❌
SpellCheckCustomDictionaryAPI
 API for accessing the Custom Dictionary for spell checking purpose.
 https://chromestatus.com/feature/6185007701557248
❌
SplitQualifiedNameOnFirstColon
 Splits a qualified name on its first colon, per the DOM "validate and
 extract" algorithm, so any later colons are part of the local name.
 See https://crbug.com/490251709
❌
SplitTextNotCleanupDummySpans—✅
SrcsetSelectionMatchesImageSet
 Kill switch for change to unify image-set and srcset selection logic.
✅
SrcsetTwoDimensionalSizes
 Supports two-dimensional source sizes ("contain"/"cover" <length>
 <length>) in sizes, takes the srcset 'h' descriptor and the width/height
 attributes into account during source selection, and makes auto-sizes
 take the content box height and object-fit into account.
 https://github.com/whatwg/html/pull/13053
❌
StableBlinkFeatures
 Used as argument in attribute of stable-release functions/interfaces
 where a runtime-enabled feature name is required for correct IDL syntax.
 This is a global flag; do not change its status.
✅
StackingContextIsNotStacked
 Kill switch for falsifying IsStacked() for non-stacked
 stacking contexts. https://crbug.com/40208685
✅
StaleImageNaturalSizeDuringRevalidation
 Kill switch for sending ImageChanged() to newly added
 observers while a stale cached image is revalidating.
 https://crbug.com/40757070
✅
StaleIntersectionGeometryForThrottledFrames
 Without this flag, an IntersectionObserver target inside a
 render-throttled iframe will continue to compute its intersection state
 as long as NeedsLayout() is false for its containing document. This
 is a faulty mechanism, as NeedsLayout() does not reliably indicate
 whether a document's rendering is out of date. When the flag is enabled
 all IntersectionObserver targets inside an iframe that becomes
 throttled will promptly generate a "not intersecting" notification.
 This is a web-visible change in behavior (though it does not reveal any
 new information), so it's hidden behind a flag to provide a kill switch
 in the event of breakage.
✅
StandardizedBrowserZoom
 See https://github.com/w3c/csswg-drafts/issues/9398
✅
StandardizedBrowserZoomOptOut—❌
StickyUserActivationAcrossSameOriginNavigation
 Preserves the sticky user activation state after a page navigates to
 another same-origin page. https://crbug.com/433729626
✅
StorageBuckets—✅
StorageBucketsDurability
 Gates the durability() method on a storage bucket and the property in
 the options struct.
❌
StorageBucketsLocks
 Gates the locks() method on a storage bucket.
❌
StrictMimeTypesForWorkers—❌
StyleResourceFetcherIdentityCheck
 When enabled, a StyleImage/FontResource cached on a (potentially
 shared) StyleSheetContents is keyed on the requesting document's
 ResourceFetcher, so a second document that shares the stylesheet
 re-runs its own request checks (e.g. Content Security Policy) instead
 of reusing the first document's already-fetched resource. crbug.com/504107363.
✅
StylusHandwriting—❌
SubApps—✅
SubframeMouseCaptureOwner
 Killswitch to guard capturing the subframe owner element instead of the
 inner element on mouse press.
✅
SuppressFullscreenFromUnfocusedView
 Require the requesting view to have focus before allowing it go
 fullscreen, unless it has a fullscreen token through capability
 delegation. https://crbug.com/40052279
✅
SuppressPointerStreamAfterDrag
 'pointercancel' and boundary leave ('pointerout' and 'pointerleave')
 events would now fire after a mouse drag start, matching the spec's
 definition of "pointer stream suppression". See:
 https://github.com/w3c/pointerevents/issues/555
✅
SvgAnimateMotionDiscreteCalcMode—✅
SvgAvoidResettingFilterQualityForTiledPattern—✅
SvgCss3dTransforms
 Apply CSS 3D transforms (perspective(), rotateX/Y, translateZ, ...)
 to SVG child elements when painting instead of flattening them to a
 2D affine matrix.
 https://issues.chromium.org/41310059
❌
SVGEmbeddedAsReplacedElement
 Treat SVG documents in <object>/<embed> as replaced elements
 https://issues.chromium.org/41302806
❌
SvgEmptyAttributeStringParsingFix
 Don't accept the empty string as a valid value in some cases.
✅
SvgEnableTextDecorationCssStyling—✅
SvgFallBackToContainerSize—✅
SvgFeImageEXIFOrientation—✅
SvgFeImageSkipHiddenContainerViewportDependence—✅
SvgFilterPaintsForHiddenContent—✅
SvgFilterUserSpaceViewportForSvg—✅
SvgIgnoreNegativeEllipseRadii—✅
SvgImageAnimationReset—✅
SvgImageNonUniformScalingFix—✅
SvgIncrementalStyle—✅
SvgInlineRootPixelSnappingScaleAdjustment—❌
SvgInstanceSyncOptimization
 When enabled, short-circuits shadow instance synchronization when SVG
 elements cannot have instances (no rare data).
✅
SvgLengthResolveUnparsedValue—✅
SvgNewZoom—❌
SVGPathDataAPI
 Structured access to SVG path segments via getPathData/setPathData.
 https://issues.chromium.org/40441025
❌
SvgPathLengthCssProperty—❌
SvgScriptElementAsyncAttribute—✅
SvgScriptFragmentAlreadyStarted
 Kill switch for marking fragment-parsed SVG <script> elements
 "already started" so they stay inert when cloned. crbug.com/538197148
✅
SvgSizingWithPreserveAspectRatioNone—❌
SvgStyleElementReflectTypeAndMedia—✅
SvgSupportMediaFragments—❌
SVGTextPathSideAttribute—✅
SvgUseNestedResourceDocuments—✅
SvgUseNestedResourceDocumentsDelayLoad—✅
SynthesizedKeyboardEventsForAccessibilityActions—❌
SyntheticMouseHoverOverInactivePage—❌
SystemWakeLock—❌
TabAlignmentWithFloats—✅
TableCellBorderColorInherit
 When enabled (the legacy behavior), interior cell borders from the
 border/rules attributes inherit the table's border-color. Disable
 to launch the spec-compliant behavior, where they resolve to
 currentColor instead (border-color is not inherited). The
 bordercolor attribute always propagates. Matches Gecko when disabled.
 See crbug.com/40745409.
✅
TableDefaultBorderColorCurrentColor
 Remove <table>'s explicit border-color: gray UA stylesheet rule,
 since it is non-standard. See crbug.com/494554835.
 This shipped in M149, was updated in M151, and can be removed in M153.
✅
TableIsAutoFixedLayout—❌
TabSizeInRubyBase—✅
TargetInShadowDeterminedBeforeListener
 When checking the shadow tree during invoke(),
 use the invocationTargetInShadowTree saved before
 calling the listener.
 This was added in M142 and can be removed after M147.
 https://issues.chromium.org/issues/41408360
✅
TargetRangesForBackwardDeletionUnit
 Makes getTargetRanges() of a deleteContentBackward beforeinput event
 cover only the code points that are actually deleted, instead of the
 whole grapheme cluster behind the caret.
 Enabled in M153, safe to remove in M155.
 https://issues.chromium.org/issues/539754135
✅
TemporalInputHostBlur
 Kill switch for releasing directly focused temporal input hosts on blur.
 See crbug.com/541316137.
✅
TestBlinkFeatureDefault
 For unit tests.
 This is for testing copied_from_base_feature_if.
 This is set in base/test/test_suite.cc.
❌
TestFeature—❌
TestFeatureCustomEnableCheck
 For unit tests.
❌
TestFeatureDependent
 For unit tests.
❌
TestFeatureForBrowserProcessReadWriteAccessOriginTrial
 This is a feature used for testing what happens when an origin trial
 feature has browser-process read/write access. It should never be used
 in production code.
❌
TestFeatureImplied
 For unit tests.
❌
TestFeatureStable
 For unit tests.
✅
TextAreaResizerFixedSize—✅
TextAutoSpaceIgnoreRubyAnnotation
 crbug.com/523134883: Ignore ruby annotation text when computing
 text-autospace boundaries.
✅
TextBoxTrimForNestedList—✅
TextBoxTrimOnInlineBox
 Kill switch for crbug.com/514953511.
✅
TextBoxTrimOnInlineBoxTextDecoration
 Kill switch for crbug.com/562543774.
✅
TextDetector—❌
TextEmphasisPositionAuto
 crbug.com/368657256
❌
TextFragmentAPI—❌
TextFragmentIdentifiers—✅
TextFragmentTapOpensContextMenu—❌
TextIteratorExcludeAutofilledSelectFix
 crbug.com/556235808
✅
TextMetricsBaselines—✅
TextOverflowClipWithSelection
 When enabled, text-overflow ellipsis is clipped when
 selection focus is inside the element, revealing the full text content.
 See https://crbug.com/40731275
✅
TextOverflowInTextarea
 crbug.com/556432992
✅
TextOverflowString
 https://crbug.com/41492459
 ChromeStatus: https://chromestatus.com/feature/6294595288825856
✅
TextScaleMetaTag—✅
TextSpacingTrimFallback
 crbug.com/431660829
✅
TextSpacingTrimFallback2
 crbug.com/431660829
❌
TextSpacingTrimFallbackChws
 crbug.com/440947112
✅
TextStreamMethod
 crbug.com/514448226
✅
TimelineTrigger
 https://drafts.csswg.org/web-animations-2/#triggers
✅
TimePickerHonorsStep
 Killswitch for the time picker offering only the values that the step
 attribute allows.
✅
TimerThrottlingForBackgroundTabs—✅
TimestampBasedCLSTracking—❌
TimeZoneChangeEvent—❌
TopicsAPI—✅
TouchDragAndContextMenu
 This feature allows touch dragging and a context menu to occur
 simultaneously, with the assumption that the menu is non-modal.  Without
 this feature, a long-press touch gesture can start either a drag or a
 context-menu in Blink, not both (more precisely, a context menu is shown
 only if a drag cannot be started).
 This feature is enabled by default in Android, where
 TouchDragOnShortPress is not shipped due to interactions with the OS that
 caused issues in the behavior.
 Please see https://issues.chromium.org/40823294
❌
TouchDragAndDrop
 This feature enables drag and drop using touch input devices. Replaces
 the old "--enable-touch-drag-drop" and "--disable-touch-drag-drop"
 switches.
 Enabled by default in Android, ChromeOS, Windows, and Linux.
❌
TouchDragOnShortPress
 This feature makes touch dragging to occur at the short-press gesture,
 which occurs right before the long-press gesture.
❌
TouchEventFeatureDetection
 Many websites disable mouse support when touch APIs are available.  We'd
 like to enable this always but can't until more websites fix this bug.
 Chromium sets this conditionally (eg. based on the presence of a
 touchscreen) in ApplyWebPreferences. "Touch events" themselves are always
 enabled since they're a feature always supported by Chrome.
✅
TouchTextEditingRedesign
 Set to reflect the kTouchTextEditingRedesign feature.
❌
TrackAnimatedSources—❌
TransferableRTCDataChannel—✅
TranslateService
 This is conditionally set if the platform supports translation.
❌
TranslationAPI—❌
TranslationAPIForWorkers—❌
TreatMhtmlInitialDocumentLoadsAsCrossDocument
 When enabled, treats the initial navigation to about:blank#fragment in
 an MHTML document as a cross-document navigation.

 Although it appears to be a same-document fragment navigation, MHTML
 loading replaces the initial empty document with a new committed
 document that has an opaque origin.

 This feature acts as a kill switch for https://crbug.com/40580002.
✅
TrustedTypesCreateParserOptions
 When enabled, trusted types can be used to enforce sanitization &
 script running rules.
 For example, it can enforce that any HTML setter would go through a
 sanitizer. See https://github.com/w3c/trusted-types/issues/594
✅
TrustedTypesFromLiteral—❌
TrustedTypesUseCodeLike—❌
TwoPhaseViewTransition—❌
UAImageReplacementAPI—❌
UnboundedElement
 The Unbounded Element API. See crbug.com/508672616.
 Note that this flag is enabled by default, to enable WebUI and other
 privileged UI to depend on this feature. The flag is here as a kill
 switch. Importantly, open web content still requires
 UnsafeUnboundedElementOnTheOpenWeb to be enabled.
 There is an override in SetCustomizedRuntimeFeaturesFromCombinedArgs to ensure this
 is only enabled for Android U+, which is the minimum version the platform supports.
✅
UnclosedFormControlIsInvalid—❌
UnexposedTaskIds—❌
UnprefixedSpeechRecognition
 This is a kill switch for the unprefixed Web Speech API.
✅
UnrestrictedMeasureUserAgentSpecificMemory—❌
UnrestrictedSharedArrayBuffer
 This is a reverse OT used for a phased deprecation, on desktop
 https://crbug.com/1071424
❌
UnrestrictedUsb
 Enables using policy-controlled feature "usb-unrestricted" to allow
 isolated context to access protected USB interface classes and to
 bypass the USB blocklist.
✅
UnsafeEscapingUnboundedElementOnTheOpenWeb
 The Unbounded Element API. See crbug.com/508672616.
 Allows open web content to escape the bounds of the top level window.
❌
UnsafeUnboundedElementOnTheOpenWeb
 The Unbounded Element API. See crbug.com/508672616.
 Enable Unbounded Element on the open web, with the bounds of the
 unbounded element limited to the topmost main frame bounds. (No
 escaping beyond the main frame, including over the Omnibox, etc.)
❌
UpdateComplexSafaAreaConstraints
 If enabled, notify the associated DisplayCutoutHost of changes in
 complex safe area constraint usage on the page.
 Only Android may make use of this feature currently.
❌
UpdateSelectionOnNodeInsertion—❌
URLPatternCompareComponent—❌
URLPatternGenerate—❌
URLSearchParamsHasAndDeleteMultipleArgs—✅
UseBeginFramePresentationFeedback—❌
UseLowQualityInterpolation
 Android currently uses low-quality interpolation, while other platforms
 default to medium-quality. This flag is for experimenting with changing
 the value on Android. See: https://crbug.com/374315986.
❌
UseOriginalDomOffsetsForOffsetMap
 This flag uses the original DOM text for input when the password
 echo is enabled to create the offset_map.
❌
UsePaintGeometryForIntersection—✅
UsePositionForPointInFlexibleBoxWithSingleChildElement—✅
UsePositionIfIsVisuallyEquivalentCandidate—✅
UserActionPseudosStopAtTopLayer
 Stops user action pseudo-classes from propagating out of top layer
 elements. See https://crbug.com/407769114.
 This shipped in M149, and can be removed in M151.
✅
UserDefinedEntryPointTiming—❌
UserMediaElement
 By mapping this new flag to the existing "UserMediaElement" origin
 trial name, both features can be evaluated concurrently during the
 trial phase while preserving a partner-less-effort path for future
 deprecation.
✅
UserMediaElementLegacy
 Allowing legacy compatibility paths for usermedia element (such as
 the 'type' attribute carried over from older permission element
 implementations).
❌
UseShadowHostStyleCheckEditable—✅
UseUndoStepElementDispatchBeforeInput—✅
V8IdleTasks—❌
VariableSystemFontSupportOnWindows—❌
VideoAutoFullscreen
 Whether a video element should automatically play fullscreen unless
 'playsinline' is set.
❌
VideoFrameMetadataBackgroundBlur—❌
VideoFrameMetadataRtpTimestamp—✅
VideoFullscreenOrientationLock—❌
VideoRotateToFullscreen—❌
VideoTrackGenerator—❌
VideoTrackGeneratorInWindow—❌
VideoTrackGeneratorInWorker—❌
ViewportHeightClientHintHeader—✅
ViewportSegments—✅
ViewTransitionLongCallbackTimeoutForTesting—❌
ViewTransitionPreventSvgFilterPaint
 Kill switch for https://crbug.com/568974861, which prevents painting
 view transition content (which may contain cross-origin frames) under
 SVG reference filters.
✅
ViewTransitionSkipPseudoTreeForNavigationCapture
 Kill switch. Doesn't generate the ::view-transition pseudo-element
 tree when capturing the outgoing document of a cross-document view
 transition, since the animation runs on the new document. This avoids
 extra style and layout passes in the capture frame.
✅
ViewTransitionSkipZeroHeightControlsSnap
 Kill switch for https://crbug.com/569098933. Doesn't snap the browser
 controls to fully shown when capturing the outgoing document of a
 cross-document view transition if the browser controls have zero
 height, since that would force a new LocalSurfaceId for the capture.
✅
VisibilityCollapseColumn—❌
VisualRectMappingFixForExpansion
 Guards the removal of legacy visual rect inflation when mapping through
 nested 2D transforms. Prevents rotated or skewed descendants from being
 repeatedly expanded while computing visible bounds.
✅
WakeLock
 The "WakeLock" feature was originally implied_by "ScreenWakeLock" and
 "SystemWakeLock". The former was removed after being promoted to
 stable, but we need to keep this feature around for code and IDLs that
 should work with both screen and system wake locks.
✅
WarnOnContentVisibilityRenderAccess
 When enabled, this will issue a warning to the console any time
 rendering is forced withing content-visibility subtrees (both
 content-visibility: auto and content-visibility: hidden).
❌
WavyDecorationContinuousPhase
 Anchors the wavy text decoration pattern at the decorating box so the
 wave phase continues across inline fragment boundaries. Enabled by
 default; acts as a kill switch. https://crbug.com/41287729
✅
WebAppInstallation
 https://chromestatus.com/feature/5183481574850560
❌
WebAppLaunchQueue
 This needs to be kept as a runtime flag
 in order to disable the API in WebView.
✅
WebAppScopeExtensions—❌
WebAppScopeSystemAccentColor
 If enabled, form controls will only render the OS accent color in a
 web app context for the initial browser profile.
✅
WebAppTabStrip—❌
WebAppTabStripCustomizations—❌
WebAppTranslations—❌
WebAssemblyCustomDescriptorsV2
 https://chromestatus.com/feature/6024844719947776, take 2
❌
WebAssemblyJSPromiseIntegration
 WebAssembly JS Promise Integration,
 https://github.com/WebAssembly/js-promise-integration/blob/main/proposals/js-promise-integration
❌
WebAudioBypassOutputBuffering
 https://chromestatus.com/feature/5077691662073856
❌
WebAudioBypassOutputBufferingOptOut
 https://chromestatus.com/feature/5077691662073856
 Allows an Enterprise Policy to override WebAudioBypassOutputBuffering
❌
WebAudioConfigurableRenderQuantum
 https://webaudio.github.io/web-audio-api/#dom-baseaudiocontext-renderquantumsize
✅
WebAuth
 WebAuth is disabled on Android versions prior to N (7.0) due to lack of
 supporting APIs, see runtime_features.cc.
✅
WebAuthAuthenticatorAttachment
 When enabled adds the authenticator attachment used for registration and
 authentication to the public key credential response.
❌
WebAuthenticationAmbient
 Prototyping https://github.com/w3c/webauthn/issues/2144
❌
WebAuthenticationAttestationFormats
 https://w3c.github.io/webauthn/#dom-publickeycredentialcreationoptions-attestationformats
❌
WebAuthenticationCmtgKey—❌
WebAuthenticationCrossDeviceFallbackUrl—❌
WebAuthenticationRemoteClientDataJson
 Lets an authorized remote desktop client supply the clientDataJSON for a
 WebAuthn request. Can be enabled only in conjunction with
 the device::kWebAuthnRemoteClientDataJson base::Feature.
 https://w3c.github.io/webauthn/#sctn-remote-client-data-json-extension
❌
WebAuthenticationRemoteDesktopSupport—❌
WebAutocorrectByDefault
 Reflects the HTML autocorrect content attribute's used autocorrection
 state to the platform IME: autocorrection is On by default and forced
 Off for URL/Email/Password inputs (and an autocorrect=off form owner).
 https://html.spec.whatwg.org/multipage/interaction.html#autocorrection
✅
WebBluetooth
 WebBluetooth is enabled by default on Android, ChromeOS, iOS, macOS and
 Windows.
❌
WebBluetoothGetDevices—❌
WebBluetoothScanning—❌
WebBluetoothWatchAdvertisements—❌
WebBluetoothWorldIsolatedCache
 Restricts the sharing of BluetoothDevice instances across different V8
 worlds (e.g., main world and isolated worlds) to prevent cross-world
 leaks.
✅
WebCodecsVideoEncoderBuffers—❌
WebCryptoPQC
 Adding post-quantum algorithms (ML-DSA, ML-KEM) to WebCrypto.
 Also adding ChaCha20-Poly1305 while we're at it.

 https://chromestatus.com/feature/5198951632470016
✅
WebGLDeveloperExtensions—❌
WebGLDraftExtensions
 Draft WebGL extensions are deliberately not enabled by experimental web
 platform features.
❌
WebGLDrawingBufferStorage—✅
WebGLOnWebGPU
 Switch WebGL to use an experimental implementation where WebGL calls
 are translated in Blink, via ANGLE, to WebGPU calls. Note that this
 is not marked as "experimental" because it is not an incremental
 addition like other experimental features but a code switch, so we
 don't want to enable it when testing all "experimental Web platform
 features".
❌
WebGLToneMapping
 WebGL tone mapping support
 https://issues.chromium.org/issues/555806830
 https://chromestatus.com/feature/5424242161221632
❌
WebGPUDeveloperFeatures
 WebGPU developer features are deliberately not enabled by experimental
 web platform features.
❌
WebGPUExperimentalFeatures
 WebGPU experimental features are meant for features that would
 eventually land in the WebGPU spec.
❌
WebGPUExperimentalResourceTable
 Enables "chromium-experimental-sampling-resource-table".
❌
WebGPUExternalImageHDRHeadroom
 WebGPU external image copy and import HDR headroom parameter for tone
 mapping.
 https://crbug.com/557320955
 https://chromestatus.com/feature/5147993689948160
❌
WebGPUMapSyncOnWorkers
 Enables GPUBuffer::mapSync for WebGPU.
❌
WebGPUMultithreadDawnWireOnWorkers
 Allows handling of WebGPU related commands from the GPU process to
 happen on a separate thread. This is a pre-requisite for emulation of
 serialized asynchronous APIs, i.e. mapSync.
❌
WebHaptics—❌
WebHID—✅
WebHIDOnServiceWorkers
 It is only enabled in extension environment for now.
❌
WebHIDWorldIsolatedCache
 Restricts the sharing of HIDDevice instances across different V8
 worlds (e.g., main world and isolated worlds) to prevent cross-world
 leaks.
✅
WebIdentityDigitalCredentials—✅
WebIdentityDigitalCredentialsCreation—✅
WebIDLBigIntUsesToBigInt
 Kill switch for making BigInt handling in WebIDL use ToBigInt.
✅
WebMCP
 Imperative WebMCP: document.modelContext and its tool
 registration/execution APIs. See also DeclarativeWebMCP.
❌
WebMCPContinuations—❌
WebMCPDeclarativeFileInput—❌
WebMCPFormAssociatedCustomElements
 Support for form-associated custom elements in declarative
 WebMCP tools.
❌
WebNFC—❌
WebOTP—✅
WebOTPAssertionFeaturePolicy—✅
WebPreferences
 https://wicg.github.io/web-preferences-api/
❌
WebPrinting—❌
WebRtcSctpSnap
 Experimental implementation of
 https://www.ietf.org/archive/id/draft-hancke-tsvwg-snap-00.html
❌
WebSerialWorldIsolatedCache
 Restricts the sharing of SerialPort instances across different V8
 worlds (e.g., main world and isolated worlds) to prevent cross-world
 leaks.
✅
WebShare
 WebShare is enabled by default on Android (non-WebView), Win, ChromeOS, and Mac.
 This is done in chrome/renderer/chrome_content_renderer_client.cc to prevent
 making the API available to Linux and WebView. Ideally we would set the status
 below to "stable" once we can do so without significant test expectation duplication.
❌
WebSocketOptionBag—❌
WebSocketStream—✅
WebSocketStreamStandardBinaryChunkType—❌
WebSpeechRecognitionContext—❌
WebSpeechTimestamps—❌
WebSpeechUnspokenPunctuation—❌
WebTransportAnticipatedConcurrentIncomingStreams—❌
WebTransportApplicationProtocol—✅
WebTransportCongestionControl—❌
WebTransportCreateStreamsBeforeReady—✅
WebTransportCustomCertificates—✅
WebTransportDatagramsReadableType—❌
WebTransportDatagramsWritable—❌
WebTransportDraining—❌
WebTransportExportKeyingMaterial—❌
WebTransportHeaders—✅
WebTransportReceiveStream—❌
WebTransportReliability—✅
WebTransportSendGroup—❌
WebTransportStats
 Note: enabling this without setting WebTransportCongestionControl to
 either BBRv1 or BBRv2 will produce poor bandwidth estimates.
❌
WebUIBundledCodeCacheAsyncFetch
 Fetches the WebUI code cache from the resource bundle asynchronously
 on a worker thread.
❌
WebUSB—✅
WebUSBOnDedicatedWorkers—✅
WebUSBOnServiceWorkers
 It is only enabled in extension environment for now.
❌
WebViewEnvReorderFix—✅
WebVTTCueLayoutByPositionAlignment
 Kill switch for sizing and placing WebVTT cue boxes by the computed
 position alignment instead of the CSS text alignment.
 Spec: https://w3c.github.io/webvtt/#cue-computed-position-alignment
✅
WebVTTCueTightLineBox
 Killswitch for sizing each cue line box using the cue text font
 instead of the text track container font, keeping the cue box tight
 around the rendered cue text.
✅
WebVTTLineAndPositionAlignment—❌
WebVTTRegions—❌
WebXR—✅
WebXREnabledFeatures—✅
WebXRFrameRate—❌
WebXRFrontFacing—❌
WebXRGPUBinding—❌
WebXRHitTestEntityTypes—❌
WebXRImageTracking—❌
WebXRLayers—✅
WebXRLayersCommon—❌
WebXRMediaBinding—❌
WebXRMeshDetection—❌
WebXRPlaneDetection—✅
WebXRPoseMotionData—❌
WebXRSpecParity—❌
WebXRVisibilityMask—✅
WheelEventMomentum
 Expose the momentum field in mouse wheel events that indicates whether an
 event is synthesized by the platform to simulate scroll inertia after the
 user has ended the physical scroll interaction.
 https://crbug.com/40704952
✅
WindowDefaultStatus
 If enabled, window.default[Ss]tatus will be supported. This is disabled
 by default, and is here to allow this behavior to be re-enabled via Finch
 in case of problems. This flag should be removed by Q1 2023, assuming
 no problems are encountered.
❌
WindowOpenAlwaysOnTop—❌
WindowOpenAttributionSrc
 If enabled, "attributionsrc" in window.open() features will not
 disable UI features (avoiding opening as a popup instead of a new tab)
 when Attribution Reporting is disabled/removed. Can be removed once
 kAttributionReportingWindowOpen usage is sufficiently low.
 https://crbug.com/553155942
✅
WordSkipSpacesPunctuationFix
 Fixes an issue where Ctrl+Right Arrow skips punctuation before a newline.
✅
XMLNoExternalEntities
 Moving to the Rust parser requires deprecation of the niche feature
 of synchronously including external entities.
 https://crbug.com/455813733
✅
XMLParserReplaceLoneSurrogates
 Replaces lone surrogates in the XML source with U+FFFD so that the
 parser makes a best-effort parse instead of rejecting the whole
 document. This feature acts as a kill switch for
 https://crbug.com/40814739. This flag was shipped in M153, and can be
 removed in M155.
✅
XMLParsingRust
 Switches from XML parsing through libxml2 to parsing XML using the
 Rust xml crate. When an XSL processing instruction is encountered,
 the Rust backend creates an ad-hoc libxml2 xmlDocPtr tree for libxslt
 if XSLT is enabled (e.g. reverse origin trial or CAP alerts).
 https://crbug.com/441911594
❌
XMLRustForNonXslt
 Enables the Rust XML parser for situations where we know
 no XSLT processing will be required. This covers usage of
 JS DOMParser API to parse XML, and usage of XMLHttpRequest
 with its responseXML document.
 https://crbug.com/466303347
✅
XMLSerializerConsistentDefaultNsDeclMatching—❌
XMLViewerForIframes—❌
XSLT
 A feature flag that controls whether XSLT is supported by the browser.
 The current default state is XSLT-enabled. Note that there is a Finch
 trial underway that sets this flag to false for pre-stable channels.
 See XSLTSpecialTrial below.
 crbug.com/435623334.
❌
XSLTSpecialTrial
 A feature flag that will be used for a "special trial" of disabling
 XSLT on pre-stable channels only. This flag does not control the
 actual enabled state of XSLT. It merely changes the console error that
 gets emitted if XSLT is disabled. When this flag is true, a "special
 trial run" message is used.
 crbug.com/435623334.
❌

Blink settings

Modify with --blink-settings:

Name Default Type
batterySaverEnabledfalsebool
preloadingDisabledfalsebool
acceptLanguages—String
defaultTextEncodingName—String
passwordEchoEnabledPhysicalfalse—
passwordEchoEnabledTouchfalse—
passwordEchoDurationInSeconds1double
validationMessageTimerMagnification50int
minimumFontSize0int
minimumLogicalFontSize0int
defaultFontSize0int
defaultFixedFontSize0int
editingBehaviorTypearray ( 'Mac' => 'mojom::blink::EditingBehavior::kEditingMacBehavior', 'Win' => 'mojom::blink::EditingBehavior::kEditingWindowsBehavior', 'Android' => 'mojom::blink::EditingBehavior::kEditingAndroidBehavior', 'ChromeOS' => 'mojom::blink::EditingBehavior::kEditingChromeOSBehavior', 'default' => 'mojom::blink::EditingBehavior::kEditingUnixBehavior', )mojom::EditingBehavior
localStorageEnabledfalse—
allowUniversalAccessFromFileURLstrue—
allowFileAccessFromFileURLstrue—
supportsMultipleWindowstrue—
javaScriptCanAccessClipboardfalse—
shouldPrintBackgroundsfalse—
shouldClearDocumentBackgroundtrue—
InspectorHighlightAdsfalse—
HighlightAdsfalse—
textAreasAreResizablefalse—
acceleratedCompositingEnabledfalse—
allowScriptsToCloseWindowsfalse—
allowUnrestrictedWindowFocusfalse—
clipboardFocusExemptfalse—
downloadableBinaryFontsEnabledtrue—
LCDTextPreferenceLCDTextPreference::kStronglyPreferredLCDTextPreference
webGL1Enabledtrue—
webGL2Enabledtrue—
webGLErrorsToConsoleEnabledtrue—
antialiased2dCanvasEnabledtrue—
antialiasedClips2dCanvasEnabledtrue—
accelerated2dCanvasMSAASampleCount0int
hyperlinkAuditingEnabledfalse—
allowRunningOfInsecureContenttrue—
pictureInPictureEnabledtrue—
webAppScope—String
webAppCustomManifestUrl—String
isInitialProfilefalse—
presentationRequiresUserGesturetrue—
embeddedMediaExperienceEnabledfalse—
immersiveModeEnabledfalse—
immersiveVideoPlaybackEnabledfalse—
scrollAnimatorEnabledtrue—
mockGestureTapHighlightsEnabledfalse—
maxTouchPoints0int
multiTargetTapNotificationEnabledtrue—
barrelButtonForDragEnabledfalse—
syncXHRInDocumentsEnabledtrue—
targetBlankImpliesNoOpenerEnabledWillBeRemovedtrue—
ignorePermissionForDeviceChangedEventfalse—
cookieEnabledtrue—
navigateOnDragDroptrue—
DOMPasteAllowedfalse—
allowCustomScrollbarInMainFrametrue—
placeRTLScrollbarsOnLeftSideInMainFramefalse—
webSecurityEnabledtrue—
spatialNavigationEnabledfalse—
touchDragDropEnabledfalse—
touchDragEndContextMenufalse—
defaultVideoPosterURL—String
smartInsertDeleteEnabledfalse—
selectTrailingWhitespaceEnabledarray ( 'Win' => true, 'default' => false, )—
selectionIncludesAltImageTextfalse—
selectionStrategySelectionStrategy::kCharacterSelectionStrategy
viewportMetaZeroValuesQuirkfalse—
ignoreMainFrameOverflowHiddenQuirkfalse—
reportScreenSizeInPhysicalPixelsQuirkfalse—
viewportMetaMergeContentQuirkfalse—
wideViewportQuirkEnabledfalse—
forceZeroLayoutHeightfalse—
scaleAllFontsIfNoMetaTextScaleTagfalse—
mainFrameClipsContenttrue—
useWideViewporttrue—
loadWithOverviewModetrue—
shouldReuseGlobalForUnownedMainFramefalse—
touchEditingEnabledfalse—
rubberBandingOnCompositorThreadfalse—
caretBrowsingEnabledfalse—
accessibilityFontScaleFactor1.0double
accessibilityFontWeightAdjustment0int
accessibilityTextSizeContrastFactor0int
mediaTypeOverride""String
displayModeOverrideblink::mojom::DisplayMode::kUndefinedblink::mojom::DisplayMode
windowShowStateui::mojom::blink::WindowShowState::kDefaultui::mojom::blink::WindowShowState
resizabletruebool
loadsImagesAutomaticallyfalse—
imagesEnabledtrue—
imageAnimationPolicymojom::blink::ImageAnimationPolicy::kImageAnimationPolicyAllowedmojom::blink::ImageAnimationPolicy
doHtmlPreloadScanningtrue—
pluginsEnabledfalse—
viewportEnabledfalse—
viewportMetaEnabledfalse—
shrinksViewportContentToFitfalse—
dnsPrefetchingEnabledfalse—
scriptEnabledfalse—
parserScriptingFlagPolicyParserScriptingFlagPolicy::kOnlyIfScriptIsEnabledParserScriptingFlagPolicy
forceAndroidOverlayScrollbarfalse—
NetworkQuietTimeout0.5double
forceMainWorldInitializationfalse—
forceTouchEventFeatureDetectionForInspectorfalse—
fullscreenSupportedtrue—
v8CacheOptionsmojom::blink::V8CacheOptions::kDefaultmojom::blink::V8CacheOptions
availablePointerTypesui::POINTER_TYPE_NONEint
availableHoverTypesui::HOVER_TYPE_NONEint
primaryPointerTypemojom::blink::PointerType::kPointerNoneblink::mojom::PointerType
primaryHoverTypemojom::blink::HoverType::kHoverNonemojom::blink::HoverType
outputDeviceUpdateAbilityTypemojom::blink::OutputDeviceUpdateAbilityType::kFastTypemojom::blink::OutputDeviceUpdateAbilityType
accessibilityPasswordValuesEnabledfalse—
showContextMenuOnMouseUpfalse—
alwaysShowContextMenuOnTouchtrue—
disableReadingFromCanvasfalse—
strictMixedContentCheckingfalse—
strictMixedContentCheckingForPluginfalse—
strictPowerfulFeatureRestrictionsfalse—
strictlyBlockBlockableMixedContentfalse—
allowGeolocationOnInsecureOriginsfalse—
logDnsPrefetchAndPreconnectfalse—
logPreloadfalse—
smoothScrollForFindEnabledfalse—
viewportStylemojom::blink::ViewportStyle::kDefaultmojom::blink::ViewportStyle
textTrackKindUserPreferenceTextTrackKindUserPreference::kDefaultTextTrackKindUserPreference
textTrackBackgroundColor—String
textTrackFontFamily—String
textTrackFontStyle—String
textTrackFontVariant—String
textTrackTextColor—String
textTrackTextShadow—String
textTrackTextSize—String
textTrackWindowColor—String
textTrackWindowRadius—String
textTrackMarginPercentage0double
preferHiddenVolumeControlsfalse—
disallowFetchForDocWrittenScriptsInMainFrameIfEffectively2Gfalse—
disallowFetchForDocWrittenScriptsInMainFrameOnSlowConnectionstrue—
disallowFetchForDocWrittenScriptsInMainFramefalse—
mainFrameResizesAreOrientationChangesfalse—
hideScrollbarsfalse—
spellCheckEnabledByDefaulttrue—
hideDownloadUIfalse—
presentationReceiverfalse—
mediaControlsEnabledtrue—
doNotUpdateSelectionOnMutatingSelectionRangefalse—
autoplayPolicyAutoplayPolicy::Type::kNoUserGestureRequiredAutoplayPolicy::Type
requireTransientActivationForGetDisplayMediatrue—
requireTransientActivationForShowFileOrDirectoryPickertrue—
forceDarkModeEnabledfalse—
navigatorPlatformOverride—String
lowPriorityIframesThresholdWebEffectiveConnectionType::kTypeUnknownWebEffectiveConnectionType
shouldProtectAgainstIpcFloodingtrue—
lazyLoadEnabledtrue—
lazyLoadingFrameMarginPxUnknown4000int
lazyLoadingFrameMarginPxOffline8000int
lazyLoadingFrameMarginPxSlow2G8000int
lazyLoadingFrameMarginPx2G6000int
lazyLoadingFrameMarginPx3G3500int
lazyLoadingFrameMarginPx4G2500int
lazyLoadingImageMarginPxUnknown3000int
lazyLoadingImageMarginPxOffline8000int
lazyLoadingImageMarginPxSlow2G8000int
lazyLoadingImageMarginPx2G6000int
lazyLoadingImageMarginPx3G2500int
lazyLoadingImageMarginPx4G1250int
inForcedColorsfalsebool
isForcedColorsDisabledfalsebool
rootScrollbarThemeColorstd::nulloptstd::optional
preferredRootScrollbarColorSchememojom::blink::PreferredColorScheme::kLightmojom::blink::PreferredColorScheme
preferredColorSchememojom::blink::PreferredColorScheme::kLightmojom::blink::PreferredColorScheme
preferredContrastmojom::blink::PreferredContrast::kNoPreferencemojom::blink::PreferredContrast
prefersReducedMotionfalse—
prefersReducedTransparencyfalse—
invertedColorsfalse—
DontSendKeyEventsToJavascriptfalse—
navigationControlsNavigationControls::kNoneNavigationControls
accessibilityAlwaysShowFocusfalse—
ariaModalPrunesAXTreefalse—
useAXMenuListtrue—
selectionClipboardBufferAvailablefalse—
middleClickPasteAllowedtrue—
accessibilityIncludeSvgGElementfalse—
bypassCSPfalse—
textSizeAdjustEnabledfalse—
WebXRImmersiveArAllowedtruebool
modalContextMenutruebool
printingMaximumShrinkFactor1.5float
prefersDefaultScrollbarStylesfalsebool
dynamicSafeAreaInsetsEnabledfalsebool
XSLTDeprecationBannerSuppressedfalsebool

Preferences

The following JSON preferences can be modified in the Preferences file in the profile:

{
    "abusive_experience_intervention_enforce": "",
    "accessibility": {
        "captions": {
            "background_color": "",
            "background_opacity": "",
            "headless_caption_enabled": "",
            "live_caption_bubble_expanded": "",
            "live_caption_enabled": "",
            "live_caption_language": "",
            "live_caption_mask_offensive_words": "",
            "live_caption_media_foundation_renderer_error_": "",
            "live_translate_enabled": "",
            "live_translate_target_language": "",
            "speech_recognition_small_expert_model_path": "",
            "text_color": "",
            "text_font": "",
            "text_opacity": "",
            "text_shadow": "",
            "text_size": ""
        },
        "shown_api_type": ""
    },
    "access_control_allow_methods_in_cors_preflight_spec_conformant": "",
    "account_info": "",
    "allow_dinosaur_easter_egg": "",
    "alternate_error_pages": {
        "enabled": ""
    },
    "apps": {
        "fullscreen": {
            "allowed": ""
        },
        "shortcuts_arch": "",
        "shortcuts_os_version": "",
        "shortcuts_version": ""
    },
    "async_dns": {
        "additional_dns_query_types_enabled": "",
        "enabled": ""
    },
    "auth": {
        "allow_cross_origin_prompt": "",
        "ambient_auth_in_private_modes": "",
        "android_negotiate_account_type": "",
        "basic_over_http_enabled": "",
        "disable_negotiate_cname_lookup": "",
        "enable_negotiate_port": "",
        "globally_scoped_http_auth_cache_enabled": "",
        "gssapi_library_name": "",
        "http_auth_allowed_for_origins": "",
        "http_auth_allowed_for_proxies": "",
        "negotiate_delegate_whitelist": "",
        "schemes": "",
        "server_allowlist": ""
    },
    "autocomplete": {
        "retention_policy_last_version": ""
    },
    "autofill": {
        "ai_last_version_deduped": "",
        "amount_extraction_ai_terms_seen": "",
        "at_memory": {
            "double_ctrl_trigger_enabled": "",
            "shortcut": "",
            "shortcut_promo_impression_count": ""
        },
        "autocomplete": {
            "label_sensitive_migration_generation": ""
        },
        "autofill_ai": {
            "identity_entities_enabled": "",
            "opt_in_status": "",
            "private_inference_notice_acknowledged_timestamp": "",
            "private_inference_notice_shown_timestamp": "",
            "private_inference_opt_in_status": "",
            "shopping_entities_enabled": "",
            "travel_entities_enabled": ""
        },
        "bnpl_enabled": "",
        "credit_card_enabled": "",
        "credit_card_fido_auth_enabled": "",
        "email_verification_enabled": "",
        "email_verification_state": "",
        "enabled": "",
        "gmail_otp_filling": {
            "activation_dismissal_timestamp": "",
            "enabled": ""
        },
        "has_seen_bnpl": "",
        "has_seen_iban": "",
        "home_metadata": "",
        "last_version_deduped": "",
        "metadata_upload_events": "",
        "name_and_email_profile_not_selected_counter": "",
        "name_and_email_profile_signature": "",
        "payment_card_benefits": "",
        "payment_cvc_storage": "",
        "profile_enabled": "",
        "secondary_form_signature_upload_events": "",
        "silent_updates": {
            "home": "",
            "work": ""
        },
        "states_data_dir": "",
        "sync_transport_opt_ins": "",
        "types_blocked": "",
        "upload_encoding_seed": "",
        "upload_events": "",
        "upload_events_last_reset_timestamp": "",
        "wallet_reminder_notice_shown": "",
        "was_name_and_email_profile_used": "",
        "work_metadata": ""
    },
    "autogenerated": {
        "theme": {
            "color": "",
            "policy": {
                "color": ""
            }
        }
    },
    "automated_password_change_enabled": "",
    "auto_pin_new_tab_groups": "",
    "background_contents": {
        "registered": ""
    },
    "background_mode": {
        "enabled": ""
    },
    "background_tracing": {
        "session_state": ""
    },
    "bookmark": {
        "storage_computation_last_update": ""
    },
    "bookmarks": {
        "editing_enabled": "",
        "managed_bookmarks": "",
        "managed_bookmarks_folder_name": ""
    },
    "bookmark_bar": {
        "hover_count": "",
        "navigation_count": "",
        "previous_render_on_ntp_time": "",
        "rendered_on_ntp_count": "",
        "show_apps_shortcut": "",
        "show_managed_bookmarks": "",
        "show_on_all_tabs": "",
        "show_tab_groups": "",
        "visibility_state": ""
    },
    "browser": {
        "app_window_placement": "",
        "attempted_to_enable_autoupdate": "",
        "clear_data": {
            "browsing_data_lifetime": "",
            "browsing_history": "",
            "cache": "",
            "clear_on_exit": "",
            "clear_on_exit_pending": "",
            "close_tabs": "",
            "cookies": "",
            "download_history": "",
            "form_data": "",
            "history_notice_shown_times": "",
            "hosted_apps_data": "",
            "passwords": "",
            "site_settings": "",
            "skills": "",
            "time_period": ""
        },
        "command_line_flag_security_warnings_enabled": "",
        "ctrl_tab_mru": "",
        "default_browser_app_menu_first_shown_time": "",
        "default_browser_declined_count": "",
        "default_browser_infobar_declined_count": "",
        "default_browser_infobar_last_declined_time": "",
        "default_browser_last_declined_time": "",
        "default_browser_setting_enabled": "",
        "dictation_onboarding_completed": "",
        "disk_cache_dir": "",
        "disk_cache_size": "",
        "dns_interception_checks_enabled": "",
        "enabled_labs_experiments": "",
        "enabled_labs_experiments_origin_lists": "",
        "enable_spellchecking": "",
        "hovercard": {
            "image_previews_enabled": "",
            "memory_usage_disable_migration_complete": "",
            "memory_usage_enabled": ""
        },
        "intranet_redirect_behavior": "",
        "last_clear_browsing_data_time": "",
        "last_redirect_origin": "",
        "last_whats_new_version": "",
        "pin_contextual_task_button": "",
        "pin_split_tab_button": "",
        "promotions_enabled": "",
        "quick_delete_ever_used": "",
        "relaunch_fast_if_outdated": "",
        "relaunch_notification": "",
        "relaunch_notification_period": "",
        "relaunch_window": "",
        "show_forward_button": "",
        "show_home_button": "",
        "split_view_drag_and_drop_enabled": "",
        "split_view_drag_and_drop_nudge_shown_count": "",
        "split_view_drag_and_drop_nudge_used_count": "",
        "suppress_default_browser_prompt_for_version": "",
        "suppress_unsupported_os_warning": "",
        "theme": {
            "color_scheme": "",
            "color_scheme2": "",
            "color_variant": "",
            "color_variant2": "",
            "follows_system_colors": "",
            "is_grayscale": "",
            "is_grayscale2": "",
            "saved_local_theme": "",
            "user_color": "",
            "user_color2": ""
        },
        "voice_typing_hotkey": "",
        "voice_typing_settings": "",
        "web_app": {
            "create_in_apps_menu": "",
            "create_in_quick_launch_bar": "",
            "create_on_desktop": ""
        },
        "window_placement": "",
        "window_placement_popup": ""
    },
    "ca_certificate_management_allowed": "",
    "certificates": {
        "ca_certificates": "",
        "ca_certificates_with_constraints": "",
        "ca_distrusted_certificates": "",
        "ca_hint_certificates": "",
        "ca_platform_integration_enabled": ""
    },
    "certificate_transparency": {
        "excluded_hosts": "",
        "excluded_spkis": ""
    },
    "child_account_status_known": "",
    "child_module": {
        "dynamic_patching_enabled": ""
    },
    "chrome": {
        "prefetch_proxy": {
            "origin_decider": {
                "retry_after": ""
            }
        }
    },
    "chrome_data_region_setting": "",
    "cloned_install": {
        "count": "",
        "first_timestamp": "",
        "last_timestamp": "",
        "session_start_last_detection_timestamp": ""
    },
    "colorpicker": {
        "SeedColorChangeCount": ""
    },
    "commerce_daily_metrics_last_update_time": "",
    "component_updates": {
        "component_updates_enabled": ""
    },
    "content_settings": "",
    "contextual_search": {
        "drive_consent_state": "",
        "search_content_sharing_settings": ""
    },
    "contextual_tasks": {
        "next_panel_open_count": ""
    },
    "context_menu_animation_state": "",
    "cors_non_wildcard_request_headers_support": "",
    "cpu_performance_tier_override": "",
    "credentials_enable_automatic_passkey_upgrades": "",
    "credentials_enable_autosignin": "",
    "credentials_enable_passkeys": "",
    "credentials_enable_service": "",
    "custom_handlers": {
        "enabled": "",
        "ignored_protocol_handlers": "",
        "policy": {
            "ignored_protocol_handlers": "",
            "registered_protocol_handlers": ""
        },
        "registered_protocol_handlers": ""
    },
    "data_sharing": {
        "eligible_for_version_out_of_date_instant_message": "",
        "eligible_for_version_out_of_date_persistent_message": "",
        "eligible_for_version_updated_message": "",
        "has_shown_any_version_out_of_date_message": ""
    },
    "default_apps": "",
    "default_apps_install_state": "",
    "default_search_provider": {
        "choice_invalidation_timestamp": "",
        "choice_screen_completion_program": "",
        "choice_screen_completion_timestamp": "",
        "choice_screen_completion_version": "",
        "choice_screen_random_shuffle_seed": "",
        "context_menu_access_allowed": "",
        "enabled": "",
        "guest_mode_prepopulated_id": "",
        "guid": "",
        "notification_reset_time": "",
        "pending_choice_screen_display_state": "",
        "reset_occurred": "",
        "reset_time": ""
    },
    "device_signals": {
        "consent_collection_enabled": "",
        "consent_received": "",
        "permanent_consent_received": ""
    },
    "device_variations_restrictions_by_policy": "",
    "devtools": {
        "adb_key": "",
        "availability": "",
        "availability_allowlist": "",
        "availability_blocklist": "",
        "backgroundserviceexpiration": "",
        "discover_tcp_targets": "",
        "discover_usb_devices": "",
        "edited_files": "",
        "file_system_paths": "",
        "gen_ai_settings": "",
        "google_developer_program_profile_availability": "",
        "last_open_timestamp": "",
        "port_forwarding_config": "",
        "port_forwarding_default_set": "",
        "port_forwarding_enabled": "",
        "preferences": "",
        "remote_debugging": {
            "allowed": "",
            "user-enabled": ""
        },
        "synced_preferences_sync_disabled": "",
        "synced_preferences_sync_enabled": "",
        "sync_preferences": "",
        "tcp_discovery_config": ""
    },
    "disable_3d_apis": "",
    "disable_screenshots": "",
    "dns_over_https": {
        "automatic_mode_fallback_to_doh": "",
        "mode": "",
        "templates": ""
    },
    "dom_distiller": {
        "font_family": "",
        "font_scale": "",
        "links_enabled": "",
        "reader_for_accessibility": "",
        "theme": ""
    },
    "downgrade": {
        "snapshot_retention_limit": ""
    },
    "download": {
        "allowed_urls_for_open_by_policy": "",
        "default_directory": "",
        "directory_upgrade": "",
        "extensions_to_open": "",
        "extensions_to_open_by_policy": "",
        "prompt_for_download": ""
    },
    "download_bubble": {
        "partial_view_enabled": "",
        "partial_view_impressions": ""
    },
    "download_restrictions": "",
    "dwa": {
        "client_id": "",
        "client_id_last_updated": "",
        "persistent_logs": ""
    },
    "easy_unlock": {
        "allowed": ""
    },
    "enable_a_ping": "",
    "enable_do_not_track": "",
    "enable_referrers": "",
    "enable_unsafe_swiftshader": "",
    "enterprise": {
        "profile_badging": {
            "toolbar_settings": ""
        }
    },
    "enterprise_hardware_platform_api": {
        "enabled": ""
    },
    "enterprise_label": {
        "custom_value": {
            "for_browser": "",
            "for_profile": ""
        }
    },
    "enterprise_logo": {
        "url": {
            "for_browser": "",
            "for_profile": ""
        }
    },
    "enterprise_reporting": {
        "chrome_cloud_reporting": "",
        "chrome_profile_cloud_reporting": "",
        "last_signals_upload_attempt_timestamp": "",
        "last_signals_upload_succeeded_config": "",
        "last_signals_upload_succeeded_timestamp": "",
        "last_upload_succeeded_timestamp": "",
        "last_upload_timestamp": "",
        "last_upload_version": "",
        "legacy_tech": {
            "urls": ""
        },
        "policies_ever_fetched_with_profile_id": "",
        "saas_usage": {
            "domain_urls_for_browser": "",
            "domain_urls_for_profile": "",
            "last_trigger_time": "",
            "report": ""
        },
        "security_signals_client_certificates_selectors": "",
        "upload_frequency": "",
        "user_security_signals": {
            "authenticated": "",
            "enabled": ""
        }
    },
    "EulaAccepted": "",
    "everything_menu": {
        "pinned_to_tabstrip": ""
    },
    "extensions": {
        "alerts": {
            "initialized": ""
        },
        "allowed_install_sites": "",
        "allowed_types": "",
        "block_external_extensions": "",
        "commands": "",
        "cws_info_fetch_error_timestamp": "",
        "cws_info_timestamp": "",
        "deleted_component_extensions": "",
        "disabled": "",
        "enterprise_promotion": {
            "expiration_time": ""
        },
        "extended_background_lifetime_urls": "",
        "extension_install_type_blocklist": "",
        "force_install_with_search_or_new_tab_overrides_enabled": "",
        "global_shortcuts": {
            "uuid": ""
        },
        "has_dismissed_enterprise_promotion": "",
        "install": {
            "allowlist": "",
            "cloud_policy_checks_enabled": "",
            "denylist": "",
            "forcelist": "",
            "initiallist": "",
            "initialprovidername": ""
        },
        "last_chrome_version": "",
        "management": "",
        "oauth_redirect_urls": "",
        "pinned_by_default": "",
        "pinned_extensions": "",
        "review_prompts_allowed": "",
        "settings": "",
        "theme": {
            "id": "",
            "pack": ""
        },
        "ui": {
            "developer_mode": ""
        },
        "unpublished_availability": ""
    },
    "external_protocol_dialog": {
        "show_always_open_checkbox": ""
    },
    "feature_engagement": {
        "profile_to_device_event_migration_completed": ""
    },
    "feed": {
        "clicks_and_views_upload_conditions_reached": "",
        "host_override": {
            "bless_nonce": "",
            "host": ""
        },
        "info_card_states": "",
        "last_fetch_had_notice_card": "",
        "notice_card_clicks_count": "",
        "notice_card_views_count": "",
        "user_actions_collection": ""
    },
    "feedback_allowed": "",
    "feedv2": {
        "actions_endpoint_override": "",
        "client_instance_id": "",
        "debug_stream_data": "",
        "experiments_v2": "",
        "experiments_v3": "",
        "has_stored_data": "",
        "metrics_data": "",
        "reliability_logging_id_salt": "",
        "request_schedule": "",
        "request_throttler": {
            "last_request_time": "",
            "request_counts": ""
        }
    },
    "fetch_keepalive_duration_on_shutdown": "",
    "file_system": {
        "file_or_directory_picker_without_allowed_for_origins": ""
    },
    "first_install_time": "",
    "from_webstore": "",
    "fullscreen": {
        "allowed": ""
    },
    "gaia_cookie": {
        "changed_time": "",
        "hash": "",
        "last_list_accounts_binary_data": "",
        "periodic_report_time_2": ""
    },
    "gcm": {
        "product_category_for_subtypes": "",
        "push_messaging_application_id_map": "",
        "push_messaging_unsubscribed_entries_list": ""
    },
    "glass_frame": {
        "enabled": "",
        "last_daily_sample": ""
    },
    "google": {
        "services": {
            "account_id": "",
            "consented_to_sync": "",
            "last_gaia_id": "",
            "last_signed_in_username": "",
            "last_username": "",
            "signin_scoped_device_id": "",
            "syncing_gaia_id_migrated_to_signed_in": "",
            "syncing_username_migrated_to_signed_in": "",
            "syncing_user_migration_type": "",
            "username_pattern": ""
        }
    },
    "hardware": {
        "audio_capture_allowed_urls": "",
        "audio_capture_enabled": "",
        "same_origin_tab_capture_allowed_by_origins": "",
        "screen_capture_allowed_by_origins": "",
        "screen_capture_enabled": "",
        "tab_capture_allowed_by_origins": "",
        "video_capture_allowed_urls": "",
        "video_capture_enabled": "",
        "window_capture_allowed_by_origins": ""
    },
    "hardware_acceleration_mode": {
        "enabled": ""
    },
    "hardware_acceleration_mode_previous": "",
    "has_dismissed_management_page_promotion_banner": "",
    "has_dismissed_policy_page_promotion_banner": "",
    "has_started_service_worker": "",
    "hats": {
        "survey_metadata": ""
    },
    "hide_web_store_icon": "",
    "high_efficiency": {
        "chip_expanded_count": "",
        "last_chip_expanded_timestamp": ""
    },
    "history": {
        "deleting_enabled": "",
        "saving_disabled": ""
    },
    "home": {
        "module": {
            "magic_stack": {
                "enabled": ""
            },
            "most_visited": {
                "enabled": ""
            },
            "price_tracking": {
                "enabled": ""
            },
            "safety_check": {
                "enabled": ""
            },
            "tab_resumption": {
                "enabled": ""
            },
            "tips": {
                "enabled": ""
            }
        }
    },
    "homepage": "",
    "homepage_is_newtabpage": "",
    "hsts": {
        "policy": {
            "upgrade_bypass_list": ""
        }
    },
    "https_first_balanced_mode_enabled": "",
    "https_first_mode_bundle_toast_queued": "",
    "https_first_mode_incognito_enabled": "",
    "https_only_mode_auto_enabled": "",
    "https_only_mode_enabled": "",
    "https_upgrades": {
        "policy": {
            "http_allowlist": "",
            "upgrades_enabled": ""
        }
    },
    "https_upgrade_fallbacks": "",
    "https_upgrade_navigations": "",
    "important_sites_dialog": "",
    "import_autofill_form_data": "",
    "import_bookmarks": "",
    "import_dialog_autofill_form_data": "",
    "import_dialog_bookmarks": "",
    "import_dialog_history": "",
    "import_dialog_saved_passwords": "",
    "import_dialog_search_engine": "",
    "import_history": "",
    "import_home_page": "",
    "import_saved_passwords": "",
    "import_search_engine": "",
    "incognito": {
        "mode_availability": ""
    },
    "incognito_content_settings": "",
    "incognito_preferences": "",
    "info-card-tracking-state-dict": "",
    "install_parameter": "",
    "install_time_for_action_metric": "",
    "intl": {
        "accept_languages": "",
        "app_locale": "",
        "charset_default": "",
        "forced_languages": "",
        "selected_languages": ""
    },
    "invert_notification_version_2_shown": "",
    "ios": {
        "send_tab_to_self": {
            "last_received_tab_url": ""
        }
    },
    "kiosk": {
        "isolated_web_app_cache_policy_state": ""
    },
    "last_update_time": "",
    "lens": {
        "lens_overlay_start_count": ""
    },
    "local": {
        "password_hash_data_list": ""
    },
    "local_test_policies_for_next_startup": "",
    "managed": {
        "serial_allow_all_ports_for_urls": "",
        "serial_allow_usb_devices_for_urls": "",
        "web_hid_allow_all_devices_for_urls": "",
        "web_hid_allow_devices_for_urls": "",
        "web_hid_allow_devices_for_urls_on_login_screen": "",
        "web_hid_allow_devices_with_hid_usages_for_urls": ""
    },
    "managed_local_network_access_ip_address_space_overrides": "",
    "managed_local_network_access_restrictions_temporary_opt_out": "",
    "media": {
        "audio_input_stream_last_time_created": "",
        "autoplay_allowed": "",
        "autoplay_whitelist": "",
        "block_autoplay": "",
        "default_audio_capture_device": "",
        "default_video_capture_Device": "",
        "engagement": {
            "schema_version": ""
        },
        "storage_id_salt": ""
    },
    "media_galleries": {
        "gallery_id": "",
        "remembered_galleries": ""
    },
    "media_router": {
        "cast_allow_all_ips": "",
        "enable_media_router": "",
        "media_remoting": {
            "enabled": ""
        },
        "receiver_id_hash_token": "",
        "show_cast_icon_in_toolbar": "",
        "show_cast_sessions_started_by_other_devices": {
            "enabled": ""
        },
        "suppress_local_discovery_permission_error": ""
    },
    "message_center": {
        "disabled_extension_ids": ""
    },
    "metrics": {
        "current_user_id": "",
        "requires_client_id_reset_on_consent": "",
        "user_consent": "",
        "user_id": "",
        "user_metrics_logs": "",
        "user_metrics_logs_metadata": ""
    },
    "native_messaging": {
        "allowlist": "",
        "blocklist": "",
        "user_level_hosts": ""
    },
    "net": {
        "allow_socket_pool_size_randomization_for_proxies": "",
        "compression_dictionary_transport_enabled": "",
        "easter_egg_high_score": "",
        "explicitly_allowed_network_ports": "",
        "happy_eyeballs_v3_enabled": "",
        "ipv6_reachability_override_enabled": "",
        "keep_whitespace_data_urls": "",
        "max_connections_per_proxy": "",
        "max_connections_per_proxy_for_websocket": "",
        "network_prediction_options": "",
        "network_qualities": "",
        "network_service_failed_launch_major_version": "",
        "quic_allowed": ""
    },
    "network_annotation_blocklist": "",
    "network_time": {
        "network_time_mapping": "",
        "network_time_queries_enabled": ""
    },
    "NewTabPage": {
        "CustomizeChromeButtonOpenCount": "",
        "CustomizeChromeExplicitlyClosed": "",
        "CustomizeChromeHiddenModules": "",
        "CustomizeChromeIPHAutoOpened": "",
        "CustomizeChromeSidePanelAutoOpeningsCount": "",
        "DisabledModules": "",
        "FooterVisible": "",
        "HiddenModules": "",
        "MicrosoftFilesModuleRetryAfterTime": "",
        "ModulesInteractedCountDict": "",
        "ModulesLoadedCountDict": "",
        "ModulesOrder": "",
        "ModulesVisible": "",
        "OutlookCalendar": {
            "LastAttachmentRequestSuccess": "",
            "LastAttachmentRequestTime": "",
            "RetryAfterTime": ""
        },
        "OutlookModuleVisible": "",
        "SharepointModuleVisible": "",
        "ToolChipsVisible": "",
        "WallpaperSearchButtonShownCount": ""
    },
    "newtab_page_location_override": "",
    "ntp": {
        "animated_doodles_enabled": "",
        "collapsed_foreign_sessions": "",
        "compose_button": {
            "shown_count": ""
        },
        "custom_background_dict": "",
        "custom_background_dict2": "",
        "custom_background_inspiration": "",
        "custom_background_local_to_device": "",
        "custom_background_local_to_device_id": "",
        "custom_links_visible": "",
        "doodle_murals_enabled": "",
        "enterprise_shortcuts_visible": "",
        "last_module_staleness_update": "",
        "last_shortcuts_staleness_update": "",
        "modules_auto_removal_disabled": "",
        "module_staleness_count_dict": "",
        "most_visited_tile_hover_count": "",
        "most_visited_tile_navigation_count": "",
        "personal_shortcuts_visible": "",
        "shortcust_visible": "",
        "shortcuts_auto_removal_disabled": "",
        "shortcuts_staleness_count": "",
        "shortcuts_type": "",
        "show_all_most_visited_tiles": "",
        "use_most_visited_tiles": "",
        "wallpaper_search_history": ""
    },
    "ntp_footer": {
        "settings": {
            "extension_attribution": "",
            "management_notice": ""
        }
    },
    "ntp_snippets": {
        "enable": "",
        "list_visible": ""
    },
    "ntp_snippets_by_dse": {
        "enable": ""
    },
    "omnibox": {
        "aim_hint_daily_impressions_count": "",
        "aim_hint_last_impression_day": "",
        "aim_hint_total_impressions": "",
        "ai_mode_settings": "",
        "bottom_omnibox_ever_used": "",
        "dismissed_enterprise_search_aggregator_iph": "",
        "dismissed_featured_enterprise_search_iph": "",
        "dismissed_gemini_iph": "",
        "dismissed_history_scope_promo": "",
        "focused_srp_web_count": "",
        "is_in_bottom_position": "",
        "keyword_space_triggering_enabled": "",
        "prevent_url_elisions": "",
        "shown_count_enterprise_search_aggregator_iph": "",
        "shown_count_featured_enterprise_search_iph": "",
        "shown_count_gemini_iph": "",
        "shown_count_history_scope_promo": "",
        "show_ai_mode_omnibox_button": "",
        "show_google_lens_shortcut": "",
        "show_search_tools": "",
        "third_party_ai_chat_settings": ""
    },
    "on_device_translation": {
        "translate_kit_binary_path": "",
        "translate_kit_registered": "",
        "translator_api_allowed": ""
    },
    "organizer_panel": {
        "entrypoint_enabled": "",
        "pinned_to_tabstrip": "",
        "sections_expanded": "",
        "sections_show_all": ""
    },
    "origin_agent_cluster_default_enabled": "",
    "origin_trials": {
        "disabled_features": "",
        "disabled_tokens": "",
        "public_key": ""
    },
    "partition": {
        "default_zoom_level": "",
        "per_host_zoom_levels": ""
    },
    "passwords_pref_with_new_label_used": "",
    "password_manager": {
        "account_store_backup_password_cleaning_last_timestamp": "",
        "account_store_date_last_used_for_filling": "",
        "account_store_migrated_to_os_crypt_async": "",
        "clearing_undecryptable_passwords": "",
        "last_negative_password_change_timestamp": "",
        "on_device_encryption_state_passkey_last_reported_bucket": "",
        "on_device_encryption_state_passkey_last_reporting_time": "",
        "on_device_encryption_state_password_last_reported_bucket": "",
        "on_device_encryption_state_password_last_reporting_time": "",
        "password_change_with_private_inference_notice_agreement": "",
        "password_promo_cards_list": "",
        "password_sharing_enabled": "",
        "profile_store_backup_password_cleaning_last_timestamp": "",
        "profile_store_date_last_used_for_filling": "",
        "profile_store_migrated_to_os_crypt_async": ""
    },
    "password_removal_reason_for_account": "",
    "password_removal_reason_for_profile": "",
    "pdf": {
        "enable_out_of_process_iframe_viewer": "",
        "enable_skia": "",
        "restrict_save_to_drive_accounts_to_pattern": "",
        "xfa_forms_enabled": ""
    },
    "pdf_local_file_access_allowed_for_domains": "",
    "performance_intervention": {
        "background_cpu_message_count": "",
        "background_cpu_rate_limited_count": "",
        "last_daily_sample": ""
    },
    "persistent_notifications": {
        "next_id": "",
        "next_trigger": ""
    },
    "pinned_tabs": "",
    "plugins": {
        "always_open_pdf_externally": ""
    },
    "policy": {
        "allow_back_forward_cache_for_cache_control_no_store_page_": "",
        "back_forward_cache_for_web_sockets_allowed": "",
        "built_in_ai_apis_enabled": "",
        "cloud_management_enrollment_mandatory": "",
        "copy_prevention_settings": "",
        "css_custom_state_deprecated_syntax_enabled": "",
        "dlp_clipboard_check_size_limit": "",
        "dlp_reporting_enabled": "",
        "dlp_rules_list": "",
        "feedback_surveys_enabled": "",
        "force_permission_policy_unload_default_enabled": "",
        "intensive_wake_up_throttling_enabled": "",
        "last_statistics_update": "",
        "lens_desktop_ntp_search_enabled": "",
        "lens_region_search_enabled": "",
        "local_network_access_permissions_policy_default_enabled": "",
        "native_window_occlusion_enabled": "",
        "restrict_background_fetch_from_service_worker_enabled": "",
        "safe_sites_filter_behavior": "",
        "select_parser_relaxation_enabled": "",
        "standardized_browser_zoom_enabled": "",
        "system_features_disable_list": "",
        "system_features_disable_mode": "",
        "user_refresh_rate": "",
        "xslt_enabled": ""
    },
    "policy_test_page_enabled": "",
    "preferences": "",
    "prefetch": {
        "search_prefetch": {
            "cache": ""
        }
    },
    "prefs": {
        "preference_reset_time": "",
        "tracked_preferences_reset": ""
    },
    "preloading": {
        "prefetch_with_service_worker_enabled": ""
    },
    "price_tracking": {
        "email_notifications_enabled": ""
    },
    "printing": {
        "allowed_background_graphics_modes": "",
        "background_graphics_default": "",
        "default_destination_selection_rules": "",
        "paper_size_default": "",
        "printer_type_deny_list": "",
        "print_header_footer": "",
        "print_preview_disabled": "",
        "print_preview_sticky_settings": "",
        "silent_printing_enabled": "",
        "use_system_default_printer": ""
    },
    "privacy_guide": {
        "viewed": ""
    },
    "privacy_sandbox": {
        "first_party_sets_data_access_allowed_initialized": "",
        "first_party_sets_enabled": "",
        "m1": {
            "ad_measurement_enabled": "",
            "fledge_enabled": "",
            "restricted": "",
            "topics_enabled": ""
        }
    },
    "private_metrics": {
        "lom": {
            "profile_id": ""
        }
    },
    "product_specifications": {
        "accepted_disclosure_version": ""
    },
    "product_specifications_entry_point_last_dismissed_time": "",
    "product_specifications_entry_point_show_interval_in_days": "",
    "profile": {
        "add_person_enabled": "",
        "avatar_index": "",
        "browser_guest_enabled": "",
        "browser_guest_enforced": "",
        "content_settings": {
            "clear_window_name_for_new_browsing_context_group": "",
            "data_url_in_svg_use_enabled": "",
            "did_migrate_adaptive_notification_quieting_to_": "",
            "disable_quiet_permission_ui_time": {
                "notifications": ""
            },
            "enable_cpss": {
                "geolocation": "",
                "notifications": ""
            },
            "enable_quiet_permission_ui": {
                "geolocation": "",
                "notifications": ""
            },
            "had_three_consecutive_denies": {
                "notifications": ""
            },
            "in_content_cookies_controls_opened": "",
            "partitioned_blob_url_usage": "",
            "permission_actions": "",
            "pref_version": ""
        },
        "cookie_controls_mode": "",
        "created_by_version": "",
        "creation_time": "",
        "default_content_setting_values": {
            "protected_media_identifier": ""
        },
        "enterprise_profile_creation": {
            "keep_existing_data_by_default": ""
        },
        "ephemeral_mode": "",
        "exit_type": "",
        "extensions": {
            "activity_log": {
                "num_consumers_active": ""
            }
        },
        "family_member_role": "",
        "force_browser_signin": "",
        "icon_version": "",
        "icon_win11_format": "",
        "info_cache": "",
        "isolated_web_app": {
            "install": {
                "forcelist": "",
                "pending_initialization_count": "",
                "user_install_enabled": ""
            }
        },
        "last_active_profiles": "",
        "last_engagement_time": "",
        "last_time_obsolete_http_credentials_removed": "",
        "last_time_password_check_completed": "",
        "last_time_password_store_metrics_reported": "",
        "last_used": "",
        "lookalike_domain_allowlist": "",
        "managed": {
            "custodian_email": "",
            "custodian_name": "",
            "custodian_obfuscated_gaia_id": "",
            "custodian_profile_image_url": "",
            "custodian_profile_url": "",
            "default_filtering_behavior": "",
            "extensions_may_request_permissions": "",
            "second_custodian_email": "",
            "second_custodian_name": "",
            "second_custodian_obfuscated_gaia_id": "",
            "second_custodian_profile_image_url": "",
            "second_custodian_profile_url": "",
            "shared_settings": "",
            "skip_parent_approval_to_install_extensions": ""
        },
        "managed_access_to_get_all_screens_media_in_session_allowed_": "",
        "managed_accounts": {
            "restriction": {
                "all_managed_accounts": "",
                "value": ""
            }
        },
        "managed_automatic_downloads_allowed_for_urls": "",
        "managed_automatic_downloads_blocked_for_urls": "",
        "managed_automatic_fullscreen_allowed_for_urls": "",
        "managed_automatic_fullscreen_blocked_for_urls": "",
        "managed_auto_select_certificate_for_urls": "",
        "managed_clipboard_allowed_for_urls": "",
        "managed_clipboard_blocked_for_urls": "",
        "managed_configuration": {
            "last_hash": "",
            "list": ""
        },
        "managed_controlled_frame_allowed_for_urls": "",
        "managed_controlled_frame_blocked_for_urls": "",
        "managed_cookies_allowed_for_urls": "",
        "managed_cookies_blocked_for_urls": "",
        "managed_cookies_sessiononly_for_urls": "",
        "managed_default_content_settings": {
            "ads": "",
            "automatic_downloads": "",
            "clipboard": "",
            "controlled_frame": "",
            "cookies": "",
            "direct_sockets": "",
            "file_system_read_guard": "",
            "file_system_write_guard": "",
            "geolocation": "",
            "idle_detection": "",
            "images": "",
            "insecure_content": "",
            "javascript": "",
            "javascript_jit": "",
            "javascript_optimizer": "",
            "legacy_cookie_scope": "",
            "local_fonts": "",
            "media_stream": "",
            "notifications": "",
            "popups": "",
            "sensors": "",
            "serial_guard": "",
            "sub_apps_without_prompts": "",
            "web_bluetooth_guard": "",
            "web_hid_guard": "",
            "web_printing": "",
            "web_usb_guard": "",
            "window_management": ""
        },
        "managed_direct_sockets_allowed_for_urls": "",
        "managed_direct_sockets_blocked_for_urls": "",
        "managed_file_system_read_ask_for_urls": "",
        "managed_file_system_read_blocked_for_urls": "",
        "managed_file_system_write_ask_for_urls": "",
        "managed_file_system_write_blocked_for_urls": "",
        "managed_geolocation_allowed_for_urls": "",
        "managed_geolocation_blocked_for_urls": "",
        "managed_idle_detection_allowed_for_urls": "",
        "managed_idle_detection_blocked_for_urls": "",
        "managed_images_allowed_for_urls": "",
        "managed_images_blocked_for_urls": "",
        "managed_insecure_content_allowed_for_urls": "",
        "managed_insecure_content_blocked_for_urls": "",
        "managed_javascript_allowed_for_urls": "",
        "managed_javascript_blocked_for_urls": "",
        "managed_javascript_jit_allowed_for_sites": "",
        "managed_javascript_jit_blocked_for_sites": "",
        "managed_javascript_optimizer_allowed_for_sites": "",
        "managed_javascript_optimizer_blocked_for_sites": "",
        "managed_legacy_cookie_access_allowed_for_domains": "",
        "managed_legacy_cookie_scope_for_domains": "",
        "managed_local_fonts_allowed_for_urls": "",
        "managed_local_fonts_blocked_for_urls": "",
        "managed_local_network_access_allowed_for_urls": "",
        "managed_local_network_access_blocked_for_urls": "",
        "managed_local_network_allowed_for_urls": "",
        "managed_local_network_blocked_for_urls": "",
        "managed_loopback_network_allowed_for_urls": "",
        "managed_loopback_network_blocked_for_urls": "",
        "managed_notifications_allowed_for_urls": "",
        "managed_notifications_blocked_for_urls": "",
        "managed_popups_allowed_for_urls": "",
        "managed_popups_blocked_for_urls": "",
        "managed_sensors_allowed_for_urls": "",
        "managed_sensors_blocked_for_urls": "",
        "managed_serial_ask_for_urls": "",
        "managed_serial_blocked_for_urls": "",
        "managed_sub_apps_without_prompts_allowed_for_origins": "",
        "managed_sub_apps_without_prompts_blocked_for_origins": "",
        "managed_users": "",
        "managed_user_id": "",
        "managed_web_hid_ask_for_urls": "",
        "managed_web_hid_blocked_for_urls": "",
        "managed_web_printing_allowed_for_urls": "",
        "managed_web_printing_blocked_for_urls": "",
        "managed_web_usb_allow_devices_for_urls": "",
        "managed_web_usb_ask_for_urls": "",
        "managed_web_usb_blocked_for_urls": "",
        "managed_window_management_allowed_for_urls": "",
        "managed_window_management_blocked_for_urls": "",
        "mixed_forms_warnings": "",
        "name": "",
        "one_time_permission_prompts_decided_count": "",
        "password_account_storage_settings": "",
        "password_dismiss_compromised_alert": "",
        "password_hash_data_list": "",
        "password_manager_leak_detection": "",
        "picker_availability_on_startup": "",
        "picker_shown": "",
        "profiles_created": "",
        "profiles_order": "",
        "sandbox_external_protocol_blocked": "",
        "shared_array_buffer_unrestricted_access_allowed": "",
        "show_picker_on_startup": "",
        "using_default_avatar": "",
        "using_default_name": "",
        "using_gaia_avatar": "",
        "was_auto_sign_in_first_run_experience_shown": "",
        "web_app": {
            "install": {
                "forcelist": ""
            },
            "install_by_user_enabled": "",
            "policy_settings": ""
        },
        "web_share": {
            "visited_targets": ""
        },
        "were_old_google_logins_removed": "",
        "xslt_deprecation_banner_suppressed": ""
    },
    "profiles": {
        "profile_basenames_deleted": ""
    },
    "profile_separation": {
        "data_migration_settings": "",
        "domain_exception_list": "",
        "settings": ""
    },
    "projects_panel": {
        "entrypoint_enabled": "",
        "pinned_to_tabstrip": ""
    },
    "prompt_on_multiple_matching_certificates": "",
    "protocol_handler": {
        "allowed_origin_protocol_pairs": "",
        "policy": {
            "auto_launch_protocols_from_origins": ""
        }
    },
    "proxy": {
        "quick_check_enabled": ""
    },
    "proxy_override_rules": "",
    "qr_code_generator_enabled": "",
    "reading_list": {
        "desktop_first_use_experience_shown": ""
    },
    "recovery_component": {
        "unpack_path": "",
        "version": ""
    },
    "regular_only_preferences": "",
    "restart": {
        "in": {
            "background": {
                "on": {
                    "shutdown": ""
                }
            }
        },
        "last": {
            "session": {
                "on": {
                    "shutdown": ""
                }
            }
        }
    },
    "restrict_youtube_cookies_deletion": "",
    "safebrowsing_for_trusted_sources_enabled": "",
    "saved_tab_groups": {
        "closed_remote_group_ids": "",
        "deleted_group_ids": "",
        "did_enable_shared_tab_groups_in_last_session": "",
        "did_sync_tab_groups_in_last_session": "",
        "pinned_position_to_projects_position_migration": "",
        "specifics_to_data_migration": ""
    },
    "savefile": {
        "default_directory": "",
        "type": ""
    },
    "schedule_to_flush_to_disk": "",
    "scroll_to_text_fragment_enabled": "",
    "sct_auditing": {
        "hashdance_report_count": ""
    },
    "search": {
        "suggest_enabled": ""
    },
    "search_engines": {
        "client_side_study_group": ""
    },
    "search_provider_overrides": "",
    "search_provider_overrides_version": "",
    "selectfile": {
        "last_directory": ""
    },
    "select_file_dialogs": {
        "allowed": ""
    },
    "session": {
        "pre_smart_restart_profile_counts": "",
        "pre_smart_restart_session_state": "",
        "restore_on_startup": "",
        "startup_urls": ""
    },
    "settings": {
        "a11y": {
            "apply_page_colors_only_on_increased_contrast": "",
            "caretbrowsing": {
                "enabled": "",
                "show_dialog": ""
            },
            "enable_accessibility_image_labels": "",
            "enable_accessibility_image_labels_opt_in_accepted": "",
            "enable_main_node_annotations": "",
            "focus_highlight": "",
            "page_colors_block_list": "",
            "prefers_default_scrollbar_styles": "",
            "requested_page_colors": ""
        },
        "allowed_domains_for_apps": "",
        "force_google_safesearch": "",
        "force_youtube_restrict": "",
        "toast": {
            "alert_level": ""
        },
        "use_shared_proxies": ""
    },
    "shared_tab_groups": {
        "managed_account_setting": ""
    },
    "sharing": {
        "fcm_registration": "",
        "local_sharing_info": ""
    },
    "sharing_hub": {
        "desktop_sharing_hub_enabled": ""
    },
    "shopping_list_bookmark_last_update_time": "",
    "should_read_incoming_syncing_theme_prefs": "",
    "should_show_price_track_fue_bubble_fue": "",
    "side_panel": {
        "alignment_overrides": "",
        "companion_pinned_to_toolbar": "",
        "google_search_side_panel_enabled": "",
        "id_to_width": "",
        "is_right_aligned": ""
    },
    "signin": {
        "account_preview": {
            "selection_heuristic_scores_last_recorded": "",
            "switching_heuristic_last_recorded": ""
        },
        "account_preview_data_last_429_time": "",
        "account_preview_data_last_fetch_accounts": "",
        "account_preview_data_last_update": "",
        "account_preview_non_periodic_fetch_count": "",
        "account_preview_preference": "",
        "account_preview_switching_preference": "",
        "AddressSignInPromoShownCount": "",
        "allowed": "",
        "allowed_on_next_startup": "",
        "AutofillSignInPromoDismissCount": "",
        "BookmarkSignInPromoShownCount": "",
        "bound_session_credentials_enabled": "",
        "HistoryPageHistorySyncPromoLastDismissedTimestampPerProfile": "",
        "HistoryPageHistorySyncPromoShownAfterDismissalPerProfile": "",
        "HistoryPageHistorySyncPromoShownCount": "",
        "history_sync": {
            "last_declined_timestamp": "",
            "successive_decline_count": ""
        },
        "interception_enabled": "",
        "PasswordSignInPromoShownCount": "",
        "prefs_themes_search_engines_account_storage_enabled": "",
        "primary_account_set_after_signin_migration": "",
        "ProfileCreationInterceptionDeclinedPref": "",
        "SearchAIModeSignInPromoDismissCount": "",
        "SearchAIModeSignInPromoLastImpressionTimestamp": "",
        "SearchAIModeSignInPromoShownCount": "",
        "signin_with_explicit_browser_signin_on": "",
        "user_cloud_signin_policy_response_from_policy_test_page": "",
        "with_credential_provider": ""
    },
    "site_isolation": {
        "isolate_origins": "",
        "origin_keyed_processes_enabled": "",
        "site_per_process": "",
        "user_triggered_isolated_origins": "",
        "web_triggered_isolated_origins": ""
    },
    "spellcheck": {
        "blocked_dictionaries": "",
        "dictionaries": "",
        "dictionary": "",
        "forced_dictionaries": "",
        "use_spelling_service": ""
    },
    "ssl": {
        "cipher_suites": {
            "blacklist": ""
        },
        "client_certs": {
            "h2_coalescing_hosts": ""
        },
        "compliance": {
            "cipher": "",
            "key_exchange": ""
        },
        "ech_enabled": "",
        "error_override_allowed": "",
        "error_override_allowed_for_origins": "",
        "rev_checking": {
            "enabled": "",
            "required_for_local_anchors": ""
        },
        "tls13_early_data_enabled": "",
        "version_max": "",
        "version_min": ""
    },
    "static_storage_quota_enabled": "",
    "strict_mime_type_check_for_worker_scripts_enabled": "",
    "subresource_filter": {
        "highlight_ads": ""
    },
    "supervised_user": {
        "metrics": {
            "day_id": ""
        }
    },
    "suppress_different_origin_subframe_js_dialogs": "",
    "sync": {
        "apps": "",
        "autofill": "",
        "bookmarks": "",
        "cached_passphrase_type": "",
        "cached_persistent_auth_error": "",
        "cached_trusted_vault_auto_upgrade_experiment_group": "",
        "clean_up_stats_table_from_account_password_store": "",
        "cookies": "",
        "data_type_status_for_sync_to_signin": "",
        "device_tab_visibility_hidden_sessions": "",
        "enable_local_sync_backend": "",
        "encryption_bootstrap_token": "",
        "encryption_bootstrap_token_per_account": "",
        "extensions": "",
        "feature_status_for_sync_to_signin": "",
        "first_time_tried_to_migrate_sync_feature_paused_to_signin": "",
        "has_setup_completed": "",
        "keep_everything_synced": "",
        "local_sync_backend_dir": "",
        "managed": "",
        "migrate_extensions_from_local_to_account": "",
        "migrate_reading_list_from_local_to_account": "",
        "migrate_theme_from_local_to_account": "",
        "passphrase_prompt_muted_product_version": "",
        "passwords": "",
        "payments": "",
        "preferences": "",
        "product_comparison": "",
        "reading_list": "",
        "saved_tab_groups": "",
        "selected_types_per_account": "",
        "sync_to_signin_migration_state": "",
        "tabs": "",
        "themes": "",
        "transport_data_per_account": "",
        "typed_urls": "",
        "wiped_apps_and_app_settings_data": ""
    },
    "syncing_theme_prefs_migrated_to_non_syncing": "",
    "sync_promo": {
        "user_menu_show_count": ""
    },
    "tabgroup": {
        "sync_enabled": ""
    },
    "tab_freezing_enabled": "",
    "tab_groups": {
        "deletion": {
            "skip_dialog_on_close_tab": "",
            "skip_dialog_on_delete": "",
            "skip_dialog_on_remove_tab": "",
            "skip_dialog_on_ungroup": ""
        },
        "editor_bubble": {
            "learn_more_footer_shown_count": ""
        }
    },
    "tab_group_saves_ui_update_migrated": "",
    "tab_scroll_buttons": {
        "pinned_to_tabstrip": ""
    },
    "tab_search": {
        "pinned_to_tabstrip": ""
    },
    "tab_stats": {
        "discards_external": "",
        "discards_frozen": "",
        "discards_proactive": "",
        "discards_suggested": "",
        "discards_urgent": "",
        "last_daily_sample": "",
        "max_tabs_per_window": "",
        "reloads_external": "",
        "reloads_frozen": "",
        "reloads_proactive": "",
        "reloads_suggested": "",
        "reloads_urgent": "",
        "total_tab_count_max": "",
        "window_count_max": ""
    },
    "task_manager": {
        "category": "",
        "column_visibility": "",
        "end_process_enabled": "",
        "window_placement": ""
    },
    "temporary_setting": {
        "enterpise_badging": ""
    },
    "toast": {
        "non_milestone_update_toast_version": ""
    },
    "toolbar": {
        "pinned_actions": "",
        "pinned_cast_migration_complete": "",
        "pinned_chrome_labs_migration_complete": "",
        "pinned_search_companion_migration_complete": "",
        "ttc_auto_pinned_migration": ""
    },
    "total_memory_limit_mb": "",
    "total_passwords_available_for_account": "",
    "total_passwords_available_for_profile": "",
    "translate": {
        "enabled": ""
    },
    "translate_allowlists": "",
    "translate_blocked_languages": "",
    "translate_recent_target": "",
    "translate_recent_targets": "",
    "translate_site_blocklist_with_time": "",
    "ukm": {
        "client_id": "",
        "persisted_logs": "",
        "session_id": ""
    },
    "uninstall_metrics": {
        "installation_date2": ""
    },
    "unsafely_treat_insecure_origin_as_secure": "",
    "url_keyed_anonymized_data_collection": {
        "enabled": ""
    },
    "user_agent_reduction": "",
    "user_experience_metrics": {
        "app_drive_has_seek_penalty": "",
        "client_id2": "",
        "client_id_timestamp": "",
        "default_opt_in": "",
        "file_metrics_metadata": "",
        "initial_logs2": "",
        "last_seen": {
            "": ""
        },
        "limited_entropy_randomization_source": "",
        "log_finalized_record_id": "",
        "log_record_id": "",
        "low_entropy_source2": "",
        "low_entropy_source3": "",
        "machine_id": "",
        "ongoing_logs2": "",
        "provisional_client_id": "",
        "pseudo_low_entropy_source": "",
        "reporting_enabled": "",
        "reset_metrics_ids": "",
        "session_id": "",
        "stability": {
            "browser_last_live_timestamp": "",
            "crash_count_due_to_gms_core_update": "",
            "exited_cleanly": "",
            "file_metrics_unsent_files_count": "",
            "file_metrics_unsent_samples_count": "",
            "gms_core_version": "",
            "kernel_crash_count": "",
            "other_user_crash_count": "",
            "saved_system_profile": "",
            "saved_system_profile_hash": "",
            "stats_buildtime": "",
            "stats_version": "",
            "system_crash_count": "",
            "system_unclean_shutdowns": ""
        },
        "uma_cell_datause": "",
        "unsent_log_metadata": {
            "initial_logs": "",
            "ongoing_logs": ""
        },
        "user_call_datause": "",
        "user_data_drive_has_seek_penalty": ""
    },
    "variations_compressed_seed": "",
    "variations_country": "",
    "variations_crash_streak": "",
    "variations_failed_to_fetch_seed_streak": "",
    "variations_forced_field_trials": "",
    "variations_forced_trial_expiration": "",
    "variations_forced_trial_starts": "",
    "variations_geo_level1": "",
    "variations_google_groups": "",
    "variations_last_fetch_time": "",
    "variations_permanent_consistency_country": "",
    "variations_permanent_overridden_country": "",
    "variations_restrictions_by_policy": "",
    "variations_restrict_parameter": "",
    "variations_safe_compressed_seed": "",
    "variations_safe_seed_date": "",
    "variations_safe_seed_fetch_time": "",
    "variations_safe_seed_locale": "",
    "variations_safe_seed_milestone": "",
    "variations_safe_seed_permanent_consistency_country": "",
    "variations_safe_seed_session_consistency_country": "",
    "variations_safe_seed_signature": "",
    "variations_seed_date": "",
    "variations_seed_milestone": "",
    "variations_seed_serial_number": "",
    "variations_seed_signature": "",
    "variations_sticky_studies": "",
    "vertical_tabs": {
        "collapsed_state": "",
        "enabled": "",
        "enabled_first_time": "",
        "everything_menu_last_pressed": "",
        "expand_on_hover": "",
        "uncollapsed_width": ""
    },
    "view_source": {
        "line_wrapping_enabled": ""
    },
    "was": {
        "restarted": ""
    },
    "was_installed_by_default": "",
    "was_installed_by_oem": "",
    "was_pinned_by_default": "",
    "webauthn": {
        "allow_with_broken_certs": "",
        "enclave_declined_gpm_bootstrapping_count": "",
        "enclave_declined_gpm_credential_creation_count": "",
        "enclave_failed_pin_attempts_count": "",
        "remote_desktop_allowed_origins": "",
        "remote_proxied_requests_allowed": "",
        "touchid": {
            "metadata_secret": ""
        }
    },
    "webkit": {
        "webprefs": {
            "allow_running_insecure_content": "",
            "default_fixed_font_size": "",
            "default_font_size": "",
            "dom_paste_enabled": "",
            "encrypted_media_enabled": "",
            "fonts": {
                "cursive": {
                    "Zyyy": ""
                },
                "fantasy": {
                    "Zyyy": ""
                },
                "fixed": {
                    "Deva": "",
                    "Hang": "",
                    "Hans": "",
                    "Hant": "",
                    "Jpan": "",
                    "Zyyy": ""
                },
                "math": {
                    "Zyyy": ""
                },
                "sansserif": {
                    "Arab": "",
                    "Aran": "",
                    "Deva": "",
                    "Hang": "",
                    "Hans": "",
                    "Hant": "",
                    "Jpan": "",
                    "Zyyy": ""
                },
                "serif": {
                    "Arab": "",
                    "Aran": "",
                    "Deva": "",
                    "Hang": "",
                    "Hans": "",
                    "Hant": "",
                    "Jpan": "",
                    "Zyyy": ""
                },
                "standard": {
                    "Arab": "",
                    "Aran": "",
                    "Deva": "",
                    "Hang": "",
                    "Hans": "",
                    "Hant": "",
                    "Jpan": "",
                    "Zyyy": ""
                }
            },
            "force_dark_mode_enabled": "",
            "javascript_can_access_clipboard": "",
            "javascript_enabled": "",
            "loads_images_automatically": "",
            "minimum_font_size": "",
            "minimum_logical_font_size": "",
            "plugins_enabled": "",
            "tabs_to_links": "",
            "text_areas_are_resizable": "",
            "web_security_enabled": ""
        }
    },
    "webrtc": {
        "diagnostic_log_collection_allowed_for_origins": "",
        "event_logs_collection": "",
        "ip_handling_policy": "",
        "ip_handling_url": "",
        "local_ips_allowed_urls": "",
        "post_quantum_key_agreement": "",
        "text_log_collection_allowed": "",
        "udp_port_range": ""
    },
    "web_app": {
        "app_id": {
            "install_url": ""
        }
    },
    "web_apps": {
        "app_agnostic_iph_link_capturing_state": "",
        "app_agnostic_iph_state": "",
        "app_agnostic_ml_state": "",
        "daily_metrics": "",
        "daily_metrics_date": "",
        "did_migrate_default_chrome_apps": "",
        "last_preinstall_synchronize_version": "",
        "uninstalled_default_chrome_apps": "",
        "web_app_ids": ""
    },
    "web_app_install_metrics": "",
    "web_audio_output_buffering_enabled": "",
    "web_package": {
        "signed_exchange": {
            "enabled": ""
        }
    },
    "worker": {
        "data_url_in_web_worker_opaque_origin_enabled": "",
        "service_worker_auto_preload_enabled": "",
        "service_worker_to_control_srcdoc_iframe_enabled": "",
        "shared_worker_blob_url_fix_enabled": "",
        "shared_worker_extended_lifetime_enabled": ""
    },
    "zerosuggest": {
        "cachedresults": "",
        "cachedresults_composebox": "",
        "cachedresults_with_url": ""
    },
    "Zyyy": ""
}