Funscript Validator

Drop in a .funscript file to find what stops it playing or makes it play badly: invalid JSON, missing or malformed actions, timestamps out of order or repeated, positions outside 0 to 100, and moves faster than your device can follow.

Runs entirely in your browser. The file is never uploaded.

Check a file

or drop a file anywhere in this box

What the validator checks

A funscript is a JSON file. Players read its actions list, where each action is a time in milliseconds (at) and a position from 0 to 100 (pos). The full field-by-field reference is in the funscript format explained.

Errors: the file will not load, or loads wrong

  • The text is not valid JSON, or the top level is not an object.
  • There is no actions list, or an action is missing at or pos, or holds something other than a number.
  • A timestamp is negative, or a position is below 0 or above 100.

Warnings: the file loads, but playback suffers

  • Actions are not in time order. Many players assume they are.
  • Two actions share the same timestamp, so the device is asked to be in two places at once.
  • Times or positions have decimals. The format uses whole numbers, and some players round or refuse them.
  • A move is faster than the speed limit you set. Set it to your device's top speed; strokes faster than that are cut short.
  • inverted, range or version hold the wrong kind of value.

Notes

  • Pauses longer than a minute, fields the format does not define, and what the file's metadata says.

Your file stays on your computer

The page reads the file with your browser's own file reader and does all the checking in this tab. There is no upload and no server call, so it works the same with your network unplugged. The repaired copy is made in the tab too, and saved by your browser.

Read next