A Valheim dedicated server keeps everything that matters in one folder: the worlds in a worlds_local subfolder, and adminlist.txt, bannedlist.txt and permittedlist.txt beside it. On Windows that folder is %USERPROFILE%\AppData\LocalLow\IronGate\Valheim, on Linux it is ~/.config/unity3d/IronGate/Valheim, and the -savedir launch argument replaces it with any path you choose. Characters are never in it - they live on each player's own computer. Nearly every "my world vanished" or "admin does not work" problem is somebody editing the right file in the wrong folder, so this post maps every location, on both the client and the server, and how to find the one your server is actually using.
The short map#
The save folder has the same layout on every platform. Only the root changes.
| What | Where, relative to the save folder | Who has it |
|---|---|---|
| Worlds (local) | worlds_local/Name.db and Name.fwl | Server, and players who host |
| Worlds (old layout) | worlds/ | Older installs, from before cloud saves |
| Characters | characters_local/Name.fch | Each player's own PC |
| Admin list | adminlist.txt | Server |
| Ban list | bannedlist.txt | Server |
| Allow list | permittedlist.txt | Server |
And the roots themselves:
| Platform | Default save folder |
|---|---|
| Windows, game or server | %USERPROFILE%\AppData\LocalLow\IronGate\Valheim |
| Linux, game or server | ~/.config/unity3d/IronGate/Valheim |
Any server started with -savedir | Exactly the path given |
LocalLow is hidden by default in Windows Explorer. Paste %USERPROFILE%\AppData\LocalLow\IronGate\Valheim into the address bar rather than clicking through. On Linux, .config is a hidden directory, so ls -a or a file manager with hidden files shown.
The ~ on Linux is the home directory of the user the server runs as, not yours. If you followed a guide that created a valheim or steam user, the save folder is /home/valheim/.config/unity3d/IronGate/Valheim, and running ls ~/.config as root shows you root's empty folder instead. This is the most common reason people "cannot find" a Linux server's world.
Worlds: the .db and .fwl pair#
A world is two files with the same name. Name.fwl is tiny - the world name, the seed and some metadata. Name.db is everything else: terrain changes, buildings, chests and their contents, tamed animals, the explored state of the world. Both are needed; a .db without its .fwl will not load, and a .fwl without its .db produces a fresh world on the same seed.
Next to them, the server keeps its own safety copies:
Name.db.oldandName.fwl.old- the previous save, written each time the world is saved.- Automatic backups, named along the lines of
Name_backup_auto-20261012093000.dband the matching.fwl, controlled by the-backups,-backupshortand-backuplongarguments.
All of these sit in the same worlds_local folder, on the same disk, which is why they protect you from a bad save and nothing else. Valheim server backups and world corruption covers what a real backup needs and how to restore from these files when a save goes wrong.
The world name you pass with -world is the file name without the extension, matched exactly, capitals included. -world "Midgard" looks for worlds_local/Midgard.db and worlds_local/Midgard.fwl. If either is missing it generates a new world under that name with a random seed, which looks to everyone like the world was wiped. It was not - the old files are wherever they were, and the server simply looked somewhere else.
worlds_local versus worlds
The _local suffix arrived with Valheim's cloud save update in late 2022. Before it, worlds lived in a folder called worlds. After it, the game separated local saves (worlds_local, characters_local) from saves kept in Steam Cloud, and the in-game Manage Saves screen moves a world between the two.
What this means in practice:
- A dedicated server reads
worlds_local. It does not know Steam Cloud exists. - A world the player saved to the cloud is not in
worlds_localon their PC. They have to open Manage Saves and move it to local before there is a file to upload. - An old install may still have a
worldsfolder with pre-2022 files in it. Those are real worlds too; if one of them is the one you want, copy the pair intoworlds_local.
Steam Cloud copies themselves sit inside Steam's own data folder, under Steam\userdata\<your Steam account number>\892970\remote. You can copy files from there, but Manage Saves is the safer route because it also deals with which copy is newer.
The step-by-step version of getting a world from a player's PC onto a server is in how to upload a Valheim save to a dedicated server.
The three list files#
adminlist.txt, bannedlist.txt and permittedlist.txt live in the root of the save folder - not in worlds_local, and not in the server's install folder. The server creates them empty on its first start if they are missing, which is useful: if you are not sure which save folder a server uses, look for these three files with a fresh timestamp.
Valheim/ adminlist.txt bannedlist.txt permittedlist.txt worlds_local/ Midgard.db Midgard.fwl Midgard.db.old Midgard.fwl.old Midgard_backup_auto-20261012093000.db Midgard_backup_auto-20261012093000.fwlThe single most common admin problem has a location cause: the admin added their ID to an adminlist.txt in the install folder, or in the save folder of a different user, or on their own PC's save folder. The server only reads the one in its own save folder. There is exactly one correct file per server.
A second trap: a player's own PC also has these three files, because the game uses them when that player hosts a world from inside the game. Editing your local adminlist.txt does nothing for a dedicated server somewhere else.
The format - SteamID64 versus platform-prefixed IDs on crossplay servers, comments, when changes take effect, and how permittedlist.txt turns a server private - has its own post: Valheim adminlist, bannedlist and permittedlist.
Moving everything with -savedir#
-savedir takes a path and makes it the save folder. The layout inside stays the same: the server writes worlds_local under it and looks for the list files directly in it.
$ ./valheim_server.x86_64 -nographics -batchmode \ -name "Longship Crew" -port 2456 -world "Midgard" \ -password "herring-barrel-42" -savedir "/srv/valheim/data"With that line the world is at /srv/valheim/data/worlds_local/Midgard.db and the admin list at /srv/valheim/data/adminlist.txt.
There are three good reasons to set it:
- Backups. One known path, outside a hidden directory in a home folder, is much easier to point a backup tool at.
- Several servers on one machine. Two servers sharing a save folder share their admin, ban and allow lists. With a
-savedireach, they are fully separate. They also need different ports - see Valheim ports 2456 and 2457 explained. - Containers. In Docker or under a panel, the save folder should be inside the mounted volume, or a container rebuild takes the world with it.
And three ways it goes wrong:
- Changing it on a running world. Adding
-savedirto a server that has been running without it does not move anything. The server starts with an empty folder, generates a new world with your world's name, and the real one is still in the old default location. Stop the server, copy the whole folder across, then add the argument. - Relative paths. A relative path is resolved from the working directory the server was started in, which is not always the install folder. Use an absolute path.
- Permissions. On Linux the directory must be writable by the user the server runs as. A root-owned directory gives a server that loads, plays, and then fails every save.
On Windows, quote the path if it contains spaces: -savedir "D:\Valheim Server Data".
The server install folder is not the save folder#
People look for the world next to valheim_server.x86_64 or valheim_server.exe because that is where the server lives. It is never there unless -savedir points there. The install folder holds the program and is safe to delete and reinstall; the save folder holds the world and is not.
What you will find in a Linux install, typically under ~/.steam/steamapps/common/Valheim dedicated server or wherever +force_install_dir put it:
| File or folder | What it is |
|---|---|
valheim_server.x86_64 | The server binary |
start_server.sh | Iron Gate's example start script, sets SteamAppId=892970 and the library path |
valheim_server_Data/ | Game data the server loads |
linux64/steamclient.so | Steam library the server needs to talk to Steam |
BepInEx/ | Only if you installed BepInEx |
start_server_bepinex.sh | Only with BepInEx: the modded start script |
On Windows the equivalents are valheim_server.exe and start_headless_server.bat, in steamapps\common\Valheim dedicated server under your Steam library if you installed it from the Tools section, or in the folder you gave SteamCMD.
Because the install folder is disposable, a validate run or a reinstall cannot harm a world in the default save folder. It can harm a world if you set -savedir to a path inside the install folder - which is one more reason to keep them apart. The install itself is walked through in installing a Valheim server with SteamCMD on Linux and the Windows dedicated server install.
Mod files
With BepInEx the server grows a second set of locations, all inside the install folder:
BepInEx/plugins- the mod.dllfiles.BepInEx/config- each mod's.cfgfile, created on first start. This is the file you edit to change a mod's settings, and it is the part of a modded setup worth backing up alongside the world.BepInEx/LogOutput.log- BepInEx's own log, which records which plugins loaded and which failed. Look here first when a mod does nothing.
Some mods also store data per world. Where they put it is up to the mod; most use the BepInEx/config folder or a folder of their own beside it. Read the mod's page before assuming the world file contains everything. Valheim mods with BepInEx on a server covers the install.
Characters stay on the client#
A Valheim character is a .fch file in characters_local on the player's own machine, with a .fch.old beside it from the previous save. The server never stores it. When a player joins, their client brings the character with it; when they leave, the client writes it back to their own disk.
This has consequences people do not expect:
- The server cannot restore a character. If a player's inventory is lost to a crash on their end, no server backup brings it back. They need their own
.fch.oldor their own backup. - A player can carry a character between worlds and servers. Gear from one world arrives in the next. On a server that wants a clean start, that is enforced socially or with a mod, not with a file.
- Resetting the world does not reset players. A new
-worldname gives a fresh map, and everyone keeps their skills and inventory. Resetting a Valheim world without losing characters uses exactly this. - Cloud characters follow the same rule as cloud worlds:
charactersinstead ofcharacters_local, managed from the character select screen.
What the world does remember about a player is their map exploration on that world, their spawn point (a bed) and anything they built or left in a chest. Those live in the .db. Their character file holds the rest, including their own copy of the map they have explored, which is why a player's map survives a server move while the world's record of their bed does not.
Logs and settings files#
Two more locations come up during troubleshooting.
The client log. Unity writes the game's log to Player.log in the save folder root on Windows (%USERPROFILE%\AppData\LocalLow\IronGate\Valheim\Player.log), with the previous session as Player-prev.log. When a player cannot connect, this file has the reason in more detail than the popup.
The server log. On Linux the server prints to standard output, so it goes wherever the process's output goes: the terminal, the systemd journal (journalctl -u valheim), or the panel console. On Windows start_headless_server.bat opens a console window. In both cases -logFile /path/to/valheim.log writes it to a file instead, which is worth doing if anything has to read it later.
The log is also the fastest way to answer "which folder is this server using". Search it for the world load line:
$ grep -iE "load world|savedir|world saved" /path/to/valheim.logA Load world: Midgard followed by the world loading normally means the files were found. A message about generating a new world means they were not, and the server is now working in a folder you did not expect.
Graphics settings and key bindings on the client are not in the save folder. On Windows the game keeps them where Unity games keep preferences, in the registry under HKEY_CURRENT_USER\Software\IronGate\Valheim. A player who "reset Valheim" by deleting the save folder lost their worlds and characters but kept their settings, which is usually the opposite of what they wanted.
Finding the folder on a hosted server#
On a panel-based host you do not see the machine's filesystem, only the server's own folder, and the question becomes which subfolder is the save folder. There are only two answers:
- The startup line sets `-savedir`. Then the save folder is that path, relative to the server's root. Look at the startup command or the variables shown with it.
- It does not. Then the server uses the Linux default, which inside a container is the hidden
.config/unity3d/IronGate/Valheimfolder in the server's root directory. Turn on hidden files if the file manager has the option, or connect over SFTP, which shows dot-folders.
Either way, the fresh adminlist.txt test works: the folder with the three list files and a worlds_local beside them is the right one. On RE:NODE the file manager and SFTP both reach the whole server folder, and the Startup tab shows the variables the server starts with, so you can confirm the world name before you upload anything. SFTP and the file manager has the connection details.
FAQ#
Where is my Valheim world saved on Windows?
In %USERPROFILE%\AppData\LocalLow\IronGate\Valheim\worlds_local, as a .db and .fwl pair. If it is not there, it is in Steam Cloud; open Manage Saves in the game and move it to local to get a file you can copy.
Where does a Linux Valheim server keep its world?
In ~/.config/unity3d/IronGate/Valheim/worlds_local for the user the server runs as, unless -savedir says otherwise. Check which user that is before you go looking in root's home folder.
Does -savedir change where characters are saved?
No. It only affects the machine running the server. Characters are stored by each player's client in characters_local on their own computer, and the server never writes them.
Why is my adminlist.txt being ignored?
Almost always because it is a different copy. The server reads only the one in its own save folder root. Delete the strays, restart the server once, and edit the file it creates if you are unsure which is which.
Can two servers share one save folder?
They can run, but they share the admin, ban and allow lists, and two servers loading the same world name will overwrite each other's saves. Give each server its own -savedir.
Is it safe to delete the server install folder?
Yes, as long as -savedir does not point inside it. The default save folder is elsewhere, so a reinstall leaves worlds alone. Copy the BepInEx/config folder first if you run mods.


