Steam Client Downgrades & Survival Kit

Table of Contents

Whether the latest update broke something, or your OS is no longer supported, there are only a few things you need to do to be fully prepared for the worst!

Current Situation

Valve changed their mind and decided against making the client inoperable for old OSes!

Old wording:

After [January 1st 2024], the Steam Client will no longer run on those versions of Windows.

New wording:

After [January 1st 2024], existing Steam Client installations on these operating systems will no longer receive updates of any kind including security updates.

In other words, if you use Windows 7/8/8.1 or macOS 10.13/10.14, downgrading is unnecessary if you want to keep playing your games in 2024 and beyond.

However, regardless, support will end January 1st, 2024 and February 15th, 2024 respectively, meaning that eventually, the client will stop working, and from then on, you will need to use SteamCMD as per section Using SteamCMD After Client Starts Breaking to download/update games.

Sadly, if you're a macOS 10.11/10.12 user, you will have to downgrade Steam, given that support already ended and the client was updated with a "bricking" update (please confirm!).

Relevant support articles

Preface

I am a Linux user. The only instances of Windows 7 I have at home are installed on another computer not used for gaming and a virtual machine without 3D acceleration. While some things will be tested, I cannot guarantee instant or reliable support in case you get stuck in the process.

Please understand this, and don't hesitate to ask elsewhere and link to other resources that could complement this guide, especially if things drastically change at some point.

Also, do it at your own risk! Steam is, after all, software that is always connected to the Internet, and it may be a bad idea to keep that running in the background if you can't be sure if it's secure.

Downgrading

There are a couple of methods to downgrade the client. All of them require the Steam client executable to be present.

Obtaining Steam executable

Note: Skip this part if you already have a working Steam installation.

It is possible to use Steam's updater with nothing more than the main Steam executable. If you don't already have a working Steam installation (or the bricked update made the main executable useless), here's how you can get it.

The executable version doesn't matter. These files have been archived using Wayback Machine. Obtain an archived version for:

Then, during or after download, remove the SHA1 file hash from the name (everything after .zip), unzip to the location you wish Steam to be installed in (or has been), and proceed with the instructions below.

The quick, online way

Using copies of Steam packages and manifests that have been archived online, it is possible to have the client downgrade itself.

Internet Archive Wayback Machine archives pages and files directly, which ensures that they have not been tampered with, and that is the source this method uses.

The procedure:

  1. If you previously enrolled to Steam Client Beta, launch Steam with -clearbeta and dismiss the "Steam needs to be online to update" error
  2. Exit Steam
  3. Launch Steam with:

    -forcesteamupdate -forcepackagedownload -overridepackageurl http://web.archive.org/web/<date>if_/media.steampowered.com/client -exitsteam
    
    — replacing <date> according to The Downgrade Table section under Wayback Machine date

    Note: If this doesn't work, also append -textmode

  4. Steam should downgrade itself and exit

  5. Done! Start the client, and it should work

    Note: On Windows, if you get a dialogue about the Steam registry path not being writable, click Repair

  6. Before launching Steam another time, create steam.cfg as per section Preventing Client Updates

If step 3 fails (less secure, relies on manual backups rather than Wayback Machine):

  1. Navigate to this page
  2. Use The Downgrade Table and find the manifest version you need
  3. Navigate to the directory of the OS you are using (steam_client_<your_OS>), and under it, navigate to the directory of the version you want to use
  4. Copy the URL for step 3 of The quick, online way

Note: For this to work, ALL packages and the package manifest must be archived as per the client manifest to a file server or a digital archive service such as Wayback Machine. Each "file" entry corresponds to a path under http://media.steampowered.com/client/.

The long, offline way

If you made a backup of Steam packages, or took someone else's at your own risk, this is how you can restore the update.

The procedure:

  1. Navigate to the Steam directory
  2. Remove the contents of package folder
  3. Copy backed-up packages to package
  4. Launch Steam, let it update, and on the Extracting package... step, press Cancel
  5. Remove package > tmp
  6. Launch Steam again
  7. Before launching Steam another time, create steam.cfg as per section Preventing Client Updates
  8. Done!

Restoring the client in case of a faulty downgrade

If you give up, it is sufficient to do this and not lose any of your data:

  1. Delete steam.cfg if it was previously created
  2. Launch Steam with these arguments:
    -forcesteamupdate -forcepackagedownload -exitsteam
    
  3. The client will exit; the next time you start it, it should be back to normal

Preventing Client Updates

If you need to downgrade your client, it is only natural that you don't want it to self-update right away.

Editing steam.cfg

Using steam.cfg, client updates can be prevented permanently.

  1. Navigate to the Steam directory:

    • Windows 32-bit: C:\Program Files\Steam
    • Windows 64-bit: C:\Program Files (x86)\Steam

    ...and our special guests, since the procedure works the same way:

    • Linux: ~/.local/share/Steam
    • MacOS: ~/Library/Application Support/Steam
  2. Create a new file, steam.cfg, unless it is already present

  3. Paste this in:
    BootStrapperInhibitAll=enable
    
    This can be disabled by prepending the line with a # so that it is commented out (ignored) until needed.

The Downgrade Table

Note: Manifest version corresponds to the Unix time the build was finalised, which can be used to determine the date.

Wayback Machine date Manifest version Notes
N/A 1674790765 Fixes, last update before the removal of -no-browser and -noreactlogin
20230428150517 1682573004 Around the time new desktop UI released in beta
20230429120402 1682708537 Hotfix
20230531113527 1685488080 Preload banner hotfix, last update before new desktop UI and -oldbigpicture removal
20230615094110 1686779606 Initial new desktop UI version, -oldbigpicture removed
20230616094017 1686880776 Hotfix
20230622105532 1687386907 Fixes
20230711162631 1689034492 Generic notification sounds, fixes, last update before -vgui removal
20230801221717 1690583737 xdg-desktop-portal no longer necessary on Linux, fixes, -vgui removed
20230912101259 1694466342 Indonesian language, fixes, removal of steam://restartinuimode/vgui
20230930002005 1696019606 Hotfix
20231026162438 1698260427 Steam Input and SteamVR improvements, fixes
20231031200154 1698777785 Back button fix, other fixes
20231116205033 1700160213 Visual tweaks, more info in game pages, other fixes and additions
20231130095245 1701289036 Fixes
20231212190321 1702079146 Fixes
20240111223616 1704936806 Workshop upgrades, fixes
20240113112425 1705108172 Fix
20240227211905 1708985249 New Chromium build, fixes
20240229082406 1709168962 Fixes
20240308104109 1709846872 Fixes
20240508075352 1714854927 Fixes, CSS class names changed
20240514121236 (incomplete?) 1715635533 Fixes, unresponsive on Linux
20240517103907 1715891371 Steam Input fixes
20240521073345 1716242052 Fixes
20240614090842 1718305227 Fixes
20240619085500 1718751621 Fixes
20240621083816 1718904662 Fixes
20240717082107 1721173382 Fixes

Manually archived versions

Do it at your own risk!

The Downgrade Table (SteamCMD)

Wayback Machine date Manifest version Notes
20230429132649 1682708339
20230531121408 1685487853
20230615102027 1686781763
20230616101802 1686881296
20230622113010 1687387651 drm_wrap "cloud" parameter
20230711170621 1689034828
20230801225604 1690585855
20230816111604 1691628584
20230912104902 1694466999
20230930005804 1696019544
20231026163910 1698262904
20231031201610 1698778122
20231116210856 1700160359
20231130101403 1701290101
20231212192413 1702079268
20240111225230 1704939842
20240113114136 1705108307
20240229084442 1709170084
20240308105638 1709846822
20240508081409 1714855729
20240514121236 (incomplete?) 1715636761
20240517103907 1715891821
20240521073345 1716242337
20240614092936 1718305764
20240619091715 1718751852 Fixed output being redirected to stderr.txt
20240621085442 1718904263
20240717083932 1721172922

Stay Logged In Past End-of-Life

Considering that the Steam backend is updated alongside the client, the version you choose to use may not be able to authenticate in the future. Since nobody knows how this will break in the future, there are two possible scenarios (or three, if you lose your current login entirely). However, there is nothing you need to do in advance, as reverting possible issues is easy to do.

Client automatically enters offline mode

This is the ideal outcome in case Valve accounted for the situation. The client will simply launch in offline mode and all installed games and applications are ready to be used. However, it may take a while longer for the client to load, as it is trying to connect and authenticate.

Improvement: In order for Steam to load more quickly, simply follow the procedure under section Extras, Keeping the client offline forever.

Client logs you out

The login window shows up, containing the login prompt or account switcher. Since the client cannot authenticate, it may seem like it's a dead end, but it's actually very easy to overcome this issue.

Solution: Simply follow the procedure under section Extras, Keeping the client offline forever. Whether the account is currently logged in or not, as long as it has been logged in to once, editing loginusers.vdf is sufficient to log in offline.

Steam install deleted/corrupted

Note: For the helper device, if Steam is already being used, make a backup of Steam and wipe it, then restore afterwards.

If the latest version of Steam cannot be run on your preferred device, running Steam on a device using a supported OS ("helper") can be used to authenticate to Steam instead, transferring all necessary files for the client to log in offline.

The procedure:

  1. On the unsupported device, perform the client downgrade to the latest Steam version it supports if it is not present/operable
  2. On a supported ("helper") device, install Steam and log in to your account
  3. Exit the client
  4. From the Steam install directory, copy appcache, config, steamapps (optional), userdata and local.vdf
  5. Transfer these files to the unsupported device, into the Steam install directory
  6. Follow the procedure under section Extras, Keeping the client offline forever
  7. Making sure that Steam works on the unsupported device, uninstall Steam from the supported device to remove leftovers, if needed

Additional steps for specific versions:

Using SteamCMD After Client Starts Breaking

Given that Steam is constantly tweaked and upgraded over time, outdated versions eventually stop being usable. Downloads/updates, and especially the ability to log in may stop working, rendering the online components of the client unusable.

However, it is likely that SteamCMD will continue working way past the "expiration date", so this is how you can use it to download/update games going forward.

Keeping downloads operational for the long term

While the client (service) will forever and ever stay a requirement for launching Steamworks API-powered games, or, rather, those that refuse to work without it, or additional DRM on top of it, downloading games should still be possible using SteamCMD. Considering it is an actively updated command line utility, there is no good reason to remove compatibility for older OSes, unless, perhaps, the web transitions to a new version of SSL that won't be supported on older OSes, or Valve compiles it against libraries that were never added to older OSes.

Moreover, with the industry transitioning away from older OSes... I guess you can imagine Steam might not exactly keep blooming with new game releases that can be played on them.

SteamCMD summarised for players

First of all, while it involves the command line and it is mainly used by developers and game server administrators, please don't be scared away. Yes, accomplishing things with it isn't a one click operation (until someone makes a batch script or software I may include here), but it is worth getting a hang of.

Installing

From the SteamCMD wiki page, under Downloading SteamCMD, on Windows, download the zip archive and extract it to the desired location. For other OSes, follow the instructions on the page.

Launching and logging in

Anytime before launching SteamCMD, make sure to close any running instance of Steam in order to prevent it from interfering with the Steam installation.

For convenience, use whichever you prefer:

Launch SteamCMD as prepared earlier. If this is the first time you are launching it or any updates arrived since the last time you used it, it will self-update, so wait for that to finish.

You will be prompted to log in using your Steam credentials. Once you successfully log in, you will be presented with a Steam> prompt.

In order to learn the usage of commands yourself, use this command:

find <query>
— replacing <query> with a search query or full command/convar name.

Linking steamapps

In order to prepare SteamCMD to be used for managing an existing game library, its steamapps directory needs to be linked into the SteamCMD installation.

Close SteamCMD, remove its steamapps directory, then run this command:

Downloading and updating games

The simplest way to download/update games is to use your Games page while SteamCMD is running. Picking download location and moving across library folders is unimplemented, but the Steam client can be used to accomplish that.

If you want to use the command line, in order to download/update games, use the command:

app_update <appid>
— replacing <appid> with the App ID of the game to download/update, shown in the Properties dialogue of each game under Updates, or in the URL of the Steam Community hub of the game (linked to in your Games page.

Additional arguments:

Downloading and updating Workshop content

The simplest method is to press Subscribe on the mod you want, and the next time you use app_update, the Workshop item will be downloaded.

Otherwise, in order to manually download/update Workshop content, obtain the App ID of the game to download content for, and obtain the Published File ID from the end of the URL of a Workshop listing page.

Use the command:

workshop_download_item <appid> <PublishedFileID>

Uploading Workshop content

Refer to Steam Workshop Implementation Guide > SteamCmd Integration.

Using custom library folders (usually unneeded)

Bug: force_install_dir removes all custom library folders, each folder will have to be re-added when Steam client starts (library_folder_add isn't even present in SteamCMD). This is presumably since SteamCMD always uses the main install directory first, edits the library folder configuration there, and only then switches to the forced location.

SteamCMD, by default, uses the location it's stored in. If steamapps directory is linked to an existing Steam installation's steamapps directory, it will use it as well, inheriting its custom library folders.

In order to switch to a different location, use this command:

force_install_dir <library_folder>
— replacing <library_folder> with the path to the library folder to switch to. Enclose it in quotes ("D:\Some Path\Steam") if it contains spaces.

For additional convenience, for each library folder you have, you may create a copy of the shortcut you made, each with this argument appended to Target field:

+force_install_dir <library_folder>
Just don't run multiple SteamCMD instances at once!

Making Backups

What's safer than making client backups, especially if they are available to all? Here's how you can feel even safer and contribute, everyone wins!

Manual backup

If you want to create a backup of the last working Steam version, simply make a copy of the package folder, as well as the Steam executable.

Automated backup

This script was developed for use in a Linux terminal, and makes a local backup as well as requests remote archival (ex. to Wayback Machine), including SteamCMD.

Archival script
#!/bin/bash
package_url="http://media.steampowered.com/client"
lists=$(echo steam_client_{win32,ubuntu12,osx}.txt steam_cmd_{win32,linux,osx}.txt)
backup_prefix="/mnt/hdd/Archive/steam_client_archive"

# Change to directory to store manifests and lists in
mkdir -p "$backup_prefix/tmp"
cd "$backup_prefix/tmp"

for manifest_name in steam_client_{win32,ubuntu12,osx} steam_cmd_{win32,linux,osx}; do
    # Retrieving all URLs to archive
    echo "Getting manifest and filenames"
    manifest_url="$package_url/$manifest_name"
    echo "$manifest_url" > $manifest_name.txt
    curl -sO "$manifest_url"
    grep -e \"file\" -e \"zipvz\" $manifest_name | cut -d\" -f4 | sed "s|^|$package_url/|" | awk '!x[$0]++' >> $manifest_name.txt

    # Making a local backup
    version=$(grep \"version\" $manifest_name | cut -d\" -f4)
    backup_path="$backup_prefix/$manifest_name/$version"
    if [[ -d "$backup_path" ]]; then
        echo "Backing up $manifest_name $version"
        mkdir -p "$backup_path"
        mv $manifest_name "$backup_path/$manifest_name.manifest"
        xargs -n1 curl -O --output-dir "$backup_path" < $manifest_name.txt
    else # Skip if already present
        echo "Skipping backup of $manifest_name $version, backup already present"
    fi
done

# Archiving URLs remotely
# Example usage: Wayback Machine - Save Page Now script by overcast07
# Obtain from https://github.com/overcast07/wayback-machine-spn-scripts
# Substitute `spn` with path to spn.sh unless installed via AUR
cat $lists > url_list.txt
spn url_list.txt

# Cleaning up
rm $lists steam_client_{win32,ubuntu12,osx} steam_cmd_{win32,linux,osx} url_list.txt

Extras

Here are some extra procedures, for convenience.

Keeping the client offline forever

Note: Don't do this unless the client stops being able to connect to begin with, otherwise downloads/updates, multiplayer and other online features won't be available!

Note: This only works for the currently logged in account ("MostRecent" = "1")! Switching is not possible offline.

This makes the client launch faster and make no connection to Steam (please confirm), which is beneficial if it cannot connect.

The procedure:

  1. Navigate to the Steam directory, as outlined before
  2. Enter config directory
  3. Edit loginusers.vdf
  4. Under the desired user's SteamID64 (identifiable by "AccountName"), make sure these options are set to "1", adding any missing options if needed:
    "RememberPassword"          "1"
    "WantsOfflineMode"          "1"
    "SkipOfflineModeWarning"    "1"
    "AllowAutoLogin"            "1"
    
  5. Make the file read-only to prevent accidentally switching off "WantsOfflineMode" while using the client (ex. by using Steam > Go Online...)
  6. If you haven't already, edit steam.cfg as per section Preventing Client Updates

Removing the countdown banner

VGUI (old UI) mode

In order to use the VGUI-based UI (used before the 2023 revision), downgrade to version 1690583737 and launch Steam with:

steam://restartinuimode/vgui
It supposedly works on Windows, but seems to be unreliable on Linux.

Otherwise, downgrade to version 1689034492 and launch Steam with -vgui.

Troubleshooting

In case downgrading causes additional issues, they will be addressed here.

Friends list no longer works in VGUI mode

In order to keep using browser-based Friends, use FixedSteamFriendsUI.

Additionally, friends list is accessible with a standalone browser here. Note that some functionality like in-game status and game invites won't work when using it outside of the client.

In the case of Firefox, PWAsForFirefox can be used to more closely replicate the original experience.

Alternatively, old Friends List does still work to an extent. Activate it by using another switch, -nofriendsui, and in addition, follow the procedure under Steam features disabled on purpose. This way, chat is mostly functional.

Steam features disabled on purpose

Some features, such as purchasing games, are disabled in some cases if the client version is too old. This check can be worked around by spoofing the version.

  1. Navigate to Steam > package
  2. Edit steam_client_<OS_type>.manifest
  3. Replace the version number in "version" field, or remove it as such:
    "version"               ""
    

Attribution

Testing/help:

Archivists:

Get Assistance

If you need help for any reason, give the Client Downgrades Discussions Area a visit.