Android RetroArch fast-forward troubleshooting / 2026-08-05

Fix RetroArch fast-forward stuck on Android without resetting every input

Separate toggle and hold hotkeys, duplicate controller bindings, an unlimited rate, core performance, and a stale configuration scope.

8 minute hotkey diagnosticCurrent RetroArch on Android; controller event delivery, menu labels, core speed, and configuration scope depend on package, device, and core

Fix RetroArch fast-forward stuck on Android without resetting every input

Tap the Fast-Forward Toggle once to cancel a latched toggle, then clear and test the Toggle and Hold bindings separately under Settings → Input → Hotkeys. Require Enable Hotkeys when a gameplay button collides with frontend commands. During diagnosis, set a finite Fast-Forward Rate instead of the unlimited zero value, save the intended configuration scope, and cold-relaunch. If the indicator clears but speed stays wrong, measure core performance and refresh behavior rather than remapping more buttons.

Do this in order

  1. 01

    Record the package, core, controller, active configuration or override, on-screen indicator, Fast-Forward Rate, and whether the fault begins after a tap, a hold, reconnect, or menu return.

  2. 02

    With content running, invoke Fast-Forward Toggle once; if normal speed returns, the toggle was latched and the Hold binding is not the first fault.

  3. 03

    Open Settings → Input → Hotkeys, clear duplicate Fast-Forward Toggle and Hold assignments, then bind only Hold to a deliberate control for the first retest.

  4. 04

    Configure Enable Hotkeys when the same physical button can also reach the game or another frontend command, and verify that releasing the hold clears the fast-forward indicator.

  5. 05

    Set a finite Fast-Forward Rate for diagnosis because `fastforward_ratio = 0` means unlimited; test a repeatable scene without changing VSync, audio, threaded video, or core options.

  6. 06

    Save the correct global or override scope, quit RetroArch through its menu, cold-relaunch, and only then investigate controller release events, core speed, refresh rate, or a stale override.

Decision and diagnostic table

ObservationLikely causeNext action
One toggle press restores speedLatched toggleRemove collision or prefer Hold
Indicator remains after releaseHold binding or release-event boundaryTest another input and inspect Android events
Indicator clears, game still too fastThrottle, refresh, or core settingRestore frame-throttle baseline
Rate varies wildlyUnlimited ratio or device ceilingUse a finite cap and measure actual speed

Toggle and hold are different commands

Libretro documents separate Fast Forward Toggle and Fast Forward Hold actions. A toggle stays active until invoked again; a hold should remain active only while its input is held. Binding both to overlapping controller paths makes the symptom ambiguous.

A zero ratio removes the cap

The current RetroArch template defines a Fast-Forward Rate of zero as unlimited and warns that finite caps are not perfectly exact. During diagnosis, a finite value makes a latched command easier to distinguish from the device merely reaching its performance ceiling.

Keep the configuration scope visible

A game, content-directory, or core override can outlive a global correction. Record which scope is active, change one binding or rate at a time, and verify after a full menu quit so Android and RetroArch both deliver a clean start.

First-party sources

Related guides