How to Customize Chrome Dino (Browser Tricks)

Glowing neon sign with pixelated Game Over text in a dark arcade setting.

The Chrome Dino game is open source under a BSD-3 license, and the live JavaScript object that runs it sits in the global scope of any page hosting it. That means a single DevTools console line can change how high the dino jumps, how fast cacti come at you, or whether you can die at all. Here is exactly how to customize Chrome Dino without installing anything.

Key takeaways

  • The game exposes a Runner singleton with a config object full of tunable numbers.
  • Change Runner.config.GRAVITY, MAX_SPEED, or INITIAL_JUMP_VELOCITY live in the console.
  • Disabling game over is one line: Runner.instance_.gameOver = function(){}.
  • Reloading the page resets every tweak — nothing persists by default.
  • For permanent changes, fork the open-source wayou repository on GitHub.

How to open the console

The console is where every tweak below happens. On Chrome, Edge, Brave, or any Chromium browser, press F12 or Ctrl + Shift + I (Cmd + Option + I on Mac). Click the “Console” tab. You should see a blinking prompt. On Firefox the shortcut is the same. Safari requires enabling the Developer menu in preferences first.

Load the T-Rex Runner before opening the console. The simplest way is to play it right here on this site — the game instance is already running and the Runner object is reachable. The same works on chrome://dino in Chrome itself.

The Runner.config object

Almost every tunable number lives in Runner.config. Paste this in the console and you will see the full object:

Runner.config

You will get back a dictionary with fields like GRAVITY, MAX_SPEED, INITIAL_JUMP_VELOCITY, SPEED, MAX_OBSTACLE_LENGTH, BG_CLOUD_SPEED, and several others. Changing any of these takes effect immediately on the running game.

Gravity

Runner.config.GRAVITY controls how quickly the dino falls after a jump. The default is around 0.6. Lower it for a slower fall and longer hang time:

Runner.config.GRAVITY = 0.2

Try 0.05 for a floaty moon-jump feel, or push it to 1.5 for a slammed-down brick of a dino. Combined with jump velocity below, this is the single most fun tweak.

Maximum speed

The game accelerates the obstacle scroll over time, capped at MAX_SPEED. Default is 13. Push it up for a ridiculous late-game pace, or drop it to 4 for a never-stressful run:

Runner.config.MAX_SPEED = 100

This is the one to set if you want to see what speed cap the rendering loop actually breaks at. Spoiler: it gets very fuzzy past 60 because each frame moves obstacles further than the dino’s hitbox.

Jump velocity

Runner.config.INITIAL_JUMP_VELOCITY sets how hard the dino launches upward. Default is -10 (negative because the y-axis is inverted in canvas coordinates). Make it more negative for a bigger leap:

Runner.config.INITIAL_JUMP_VELOCITY = -25

Combined with low gravity, this puts the dino in orbit. Pair them carefully and you can clear every pterodactyl in a single bound.

Starting speed

Runner.config.SPEED is the current scroll speed. Set it to start a run already going fast:

Runner.config.SPEED = 20

Note this gets reset to the default on the next game start unless you also raise MAX_SPEED.

Disabling game over

The single most-shared T-Rex Runner trick is the immortality one-liner. The game’s gameOver method is on the running instance, not the prototype, so you can override it:

Runner.instance_.gameOver = function(){}

After running that, hitting a cactus does nothing. The dino phases through. This is a documented quirk of the open-source codebase, not a hack of the site — the source is on GitHub at wayou/t-rex-runner, the canonical fork that mirrors the original Chromium source.

To restore game over without reloading:

Runner.instance_.gameOver = Runner.prototype.gameOver

The pterodactyl-free run

Obstacle types come from Runner.spriteDefinition and the obstacle generator in the running instance. The clean way to skip pterodactyls (the flying ones that show up at higher speeds) is to filter them out of the obstacle types array. The exact field name has shifted across versions of the source, so the most stable approach is to set the max obstacle length to 0 for the pterodactyl type. Inspect Runner.instance_.horizon.obstacles mid-game and you will see the current ones; mutating that array can clear out specific obstacles in flight.

Changing the dino’s look

Two ways. The first is the night-mode toggle that ships with the game — wait until your score hits an internal threshold (around 700) and the colors invert. You can force it immediately:

Runner.instance_.invert(true)

The second is replacing the sprite image. The game uses a single sprite sheet loaded from the page. Replacing that asset means forking the project. The open-source wayou repository lets you swap the sprite for any image of the same dimensions. People have used this to turn the dino into a cat, a pixel ghost, or a custom mascot. It is not a console-only trick; it requires hosting your own copy.

Persistence and the reload problem

Everything above is wiped on page reload. That is by design — the page reloads, the JavaScript loads fresh, the defaults reapply. If you want your tweaks to stick across sessions, two options. Use a browser extension that runs a userscript on the page (Tampermonkey is the standard tool). The script can wait for Runner to exist and then apply your config edits automatically. Or fork the wayou repository, change the defaults in the source, and host your own copy. Either approach is real customization rather than runtime poking.

Why this works at all

The T-Rex Runner shipped to Chrome’s offline page in 2014 was designed for transparency. The source is open, the global object hierarchy is exposed, and no obfuscation hides the field names. That has let people build Python bots that read pixel data, AI agents that learn to play, and fan sites that customize the visuals. The accessibility of the internals is part of why this little game has had such a long second life. For more on the codebase itself, our source code explainer walks through the main loops.

Frequently asked questions

Will customizing Chrome Dino get me banned?

There is nothing to be banned from. The game has no accounts, no leaderboards, and no server. Console tweaks affect only your local browser session and reset on reload. You are modifying a copy of the game that is running locally.

Why do my changes disappear when I refresh?

The page reloads the original JavaScript and recreates the Runner instance with default values. To persist changes, use a userscript manager like Tampermonkey or fork the open-source codebase.

Can I customize the Chrome Dino on chrome://dino?

Yes. The same Runner object exists on Chrome’s built-in offline page. Open DevTools (Ctrl + Shift + I) while the offline page is showing and the console commands work identically.

What’s the highest MAX_SPEED that still feels playable?

Most players hit their reaction limit around 25 to 30. Anything past 40 requires more luck than skill because obstacles move farther per frame than the dino’s hitbox. The render loop keeps going up to around 120 before frame skipping starts to break it visibly.

Is the immortality trick a bug?

Not really — it’s a consequence of how the game exposes its methods. The original Chromium developers wrote the code without obfuscation, so the gameOver method is overridable like any JavaScript function. It is a feature of an open codebase, not a vulnerability.

The bottom line

The T-Rex Runner is one of the most modifiable games on the public web because its authors never tried to hide it. Five console lines can turn it into a slow-motion meditation, a hypersonic blur, or an unkillable side-scroller. None of it persists, none of it cheats anyone, and all of it teaches you a little bit about how the game actually works. Open the console, paste something silly, and watch the dino do something it was never quite supposed to do.