This guide will provide you with all the knowledge required to start speedrunning Portal in any category of your choice. This guide is designed to be used with Source Unpack but can partially be used with the plain Steam version of the game.

This guide is a constant work in progress.

Full Game Leaderboard:
Community Sum of Best:
Individual Level Leaderboard:
Category Extension Leaderboard:
Custom Portal Gun Tutorial (Unpack Version):
Texture Locations:
Doc of Extra Docs:



Resources are also available from the leaderboard’s resources section and the #resources channel in the Discord.

Source Unpackpermalink

An older version of the game where certain glitches are easier, load times are shorter and there are no random stutters

Download can be found here

  • Required for Out of Bounds, Inbounds and Inbounds No SLA
  • Recommended for Glitchless
  • Demo Auto-Recorder and SPT already included

Demo Auto-Recorderpermalink

A plugin that automatically records demos for your runs
Required for top 10 runs, recommended otherwise

Download can be found here - (Installation instructions)
VDF file to automatically load the plugin can be found here

Download the 2007 version for Source Unpack or the 2013 version for the Steam release.


A speedrun timer with an auto-splitter included

Download can be found here
Pre-made splits can be found here
Default category is set to Inbounds, if you are running a different category make sure to change this.

Vault Savepermalink

A save file and a demo file that you need to use if you want to skip the intro

Download can be found here


Times demos, giving you an exact time for your runs

Download can be found here

Source Pause Tool (SPT)permalink

This plugin has a number of useful features

  • Save Glitch Overlay (To see where you’re actually aiming your portals during a Save Glitch)
  • HUD with extra details (Portal Bubble, OoB, etc.)
  • TAS Tools (Documentation can be found here)
  • much more...

Download can be found here


Times single demos with ticks for ILs

Download can be found here

Input HUD (IHUD)permalink

An input display that is viewable in-game, an alternative to Nohboard

Download can be found here

Portal Toolspermalink

A tool that allows you to very easily change your portal and crosshair colors in just a few clicks

Download can be found here

Discord Rich Presencepermalink

Download can be found here


  • After downloading Source Unpack, extract it somewhere you like (Documents or Desktop).

Do NOT put it in your Steam library or in system folders!
This version does not require the Steam version, but you do need to own Portal on Steam and have Steam running in order to play.

  • Once installation is complete, simply go to your chosen folder and double-click on your Portal.bat to launch the game.

You may also choose to create a shortcut to this file on your Desktop for convenience.

  • When you first launch your game, enable the developer console

Options -> Keyboard -> Advanced -> Enable Developer Console
It makes key bindings much easier and allows the use of the Demo Auto-Recorder plugin. You can then open the console by pressing the key under the Escape key.

You should see a message in the console saying [Speedrun] Speedrun_demorecord Loaded and have access to the various speedrun commands. If you do still need to install this for any reason, you can use this tutorial here.

  • Download the Vault Save and unzip it into Source Unpack/portal/SAVE/

Go to the Keybinds section of this guide to see the different binds you need to actually start the run.
Please be aware that if you want to skip the vault, you are required to use this specific file; making your own file is not allowed.

In LiveSplit, make sure to right click and select the Edit Splits option, then click on the Activate button to ensure that the autosplitter is active.
Once you’re done, close the Edit Splits window, then right click the main window again and go to Compare Against and choose Game Time to select the correct timing method. This will ensure that load times are removed from your final time.
Make sure to always save your splits when you are done using LiveSplit.

(Linux Installation Guide video can be found here)


How to bindpermalink

From here on, we will use the console to change key bindings and other settings. The command to bind commands to a key is bind [key] [command] (without the brackets). You can use any key for any command, but this guide will show examples with commonly used keys further down.

Find commandpermalink

If you ever forget the full name of a command, you can search for it using the find command. Example: If you forgot the command to move left, find left will give you a list of all commands containing the keyword "left"

Jump Bindpermalink

Next you need to bind the +jump command to your scroll wheel. This can be done with bind mwheelup +jump and/or bind mwheeldown +jump (This allows us to buffer jumps as we land, which is essential for consistent bhops and ABH movement)

Quick Save & Load Bindspermalink

First you need to bind the save and load commands to keys. This can be done with bind [key] "save quick" and bind [key] "load quick"

Save-Load Bindpermalink

For easier save glitching you can make a save-load bind separate from the normal Quick Save and Quick Load buttons.

Type bind [key] "save glitch; load glitch" into your console, again, replace [key] with your preferred key. Note the quotes here: Commands with spaces and/or semicolons have to be surrounded with quotes.

It is also recommended that you bind a key to load from this save (bind [key] "load glitch"). This way, you can try again quickly in case you miss a save glitch shot.

FPS Bindpermalink

If you have a lowering fps bind (including fps_max 30) (mostly used in advanced routes), you want to have a bind to raise the fps again by changing the fps_max value back to 300. bind [key] "save glitch; load glitch; fps_max 300"

Toggle Duckpermalink

If you're not running Glitchless, you also want to bind toggle_duck, which lets you automatically uncrouch on the next jump. This is mainly useful in Inbounds & Inbounds No SLA, where a few strats need it and it can be used for advanced movement techniques. It is strongly recommended to not bind toggle_duck to either CTRL or SHIFT as you will run into issues later on when trying to perform advanced movement techniques.

Portal Funnelingpermalink

You may also want binds to turn off/on portal funneling, which is a setting that pulls you into floor portals. bind [key] "sv_player_funnel_into_portals 1" and bind [key] "sv_player_funnel_into_portals 0"


Another optional command is cl_showpos 1 This displays your location and camera angles in the top right corner of the screen and can be used to make some more precise tricks easier.

Vault Savepermalink

For the Vault Save you need one more step to tell the Demo Auto-Recorder plugin to not start from the beginning of the first map but from the pre-made save file you installed prior. For that, simply type speedrun_save vault into the console and your run should now start using the Vault Save.

Bind Summarypermalink

Here is a list of binds commonly used for speedruns

bind mwheelup +jump
bind mwheeldown +jump
bind q "save quick"
bind f "load quick"
bind v "save glitch; load glitch; fps_max 300"
bind b "save glitch; load glitch; fps_max 30"
bind t "load glitch"
bind r toggle_duck
bind 1 "sv_player_funnel_into_portals 1"
bind 2 "sv_player_funnel_into_portals 0"
bind [ speedrun_start
bind m speedrun_stop

Please note: Source Engine has media key inputs for next song, pause song and previous song on P, G and Q respectively.

Practice commandspermalink

For practicing, you may use these commands:

sv_cheats 1         - Enable cheats (0 to disable)
noclip              - Fly around the map without colliding with any walls
host_timescale 0.5  - Change the game speed. 1 is 100%, 0.5 is 50%, etc.
god                 - Infinite health
ai_disable          - Disable turrets & GLaDOS
_y_spt_overlay 1    - Enable SPT overlay for save glitches

Please note: These commands are cheat protected and are not allowed in runs. Please disable them before doing runs.

Allowed Commands / Bindspermalink

  • Any bind that is accessible from the menu
  • Custom named save binds
  • Demo Auto-Recorder plugin related binds
  • Toggle binds
  • Binds for sensitivity
  • sv_player_funnel_into_portals
  • toggle_duck
  • cl_showpos 1
  • r_drawviewmodel 0
  • save, fps_max [fps] and load on one key binding


  • Timing begins when the crosshair appears and ends when it disappears after GLaDOS' death.
  • Timing is done using in-game time therefore LiveSplit is highly recommended due to its automatic start/stop function and load removal.
  • You are allowed to use the official save to skip the waiting time in the vault.
  • You have to set LiveSplit to show game time if you use the vault save.
  • Pauses have to be timed


  • All runs have to be submitted with some sort of proof in form of a video or demos. In case of suspicion, demos can be requested by the mods.
  • Videos have to show the full run from start to finish.
  • Top 10 runs have to be submitted with a recording showing LiveSplit and demos provided.