RE:NODE

Find your Valheim world seed on a dedicated server

By RE:NODE Team
13 min read


Your Valheim seed is a ten-character string, such as Fj3kQ9mXa2, stored in the world's metadata file on the server. On current builds of the dedicated server that file is no longer WorldName.fwl sitting next to a .db. Each world is now a folder, and the seed is in a file called _main.<number>.fwl2 inside it. Download the newest one, open it in any plain text viewer, and the seed is the short string right after the world name. If you play on a console and cannot reach the files at all, the person who runs the server can do this for you in a couple of minutes.

The rest of this post covers where that folder is, how to read the file without damaging it, which of several copies to trust, and what to do when a search for .fwl turns up nothing at all - which is the usual way people find out the layout has changed.

Why searching for .fwl finds nothing#

For most of Valheim's life a world was two files with the same name: Midgard.fwl, a few hundred bytes holding the name and the seed, and Midgard.db, holding everything that had changed in the world. Most guides on the internet, including our own older save locations post, describe that pair, and most "how do I find my seed" answers say "open the .fwl in Notepad".

On the servers we run today, a running world writes something different. The server log describes every save in five steps:

Server log, one world save
World save (1/5) Cloud & Backup checks done [0ms] => Save number 435World save (2/5) Chunks writing done [223ms]World save (3/5) DB2 writing done [20ms]World save (4/5) FWL writing done [3ms]World save (5/5) done. Total time [289ms]

Those steps map onto files in a folder named after the world, and none of them ends in .fwl or .db. So a file search for *.fwl, which is exactly what most instructions tell you to do, comes back empty even though the server has saved the world hundreds of times. Nothing is missing. The extension is .fwl2, and it is one level deeper than you were looking.

We cannot give you the exact version in which this changed, and we would rather not guess. If you need to know whether a particular server uses the old or the new layout, look in its worlds_local folder: folders mean the new layout, .fwl and .db files mean the old one.

The new world folder, file by file#

Here is a real world folder on a Linux dedicated server, trimmed. The world is called Midgard and the server had saved it 435 times:

worlds_local
worlds_local/  Dedicated/  Midgard/    _main.435.fwl2    _main.435.db2    _main.435.chunks    _main.435.ok    1e_1e__1_1.chunk    1e_20__1_1.chunk    ...  Midgard_backup_auto-20261019-200416/  Midgard_backup_auto-20261019-111133/

What each kind of file is for, as far as a server owner needs to know:

FileWhat it holdsSize
_main.N.fwl2World name, seed, metadataHundreds of bytes
_main.N.db2World state that is not in chunksTens to hundreds of KB
_main.N.chunksIndex of the chunk filesTiny
*.chunkSaved state for areas of the mapKB to MB each
_main.N.okMarker that save N finished4 bytes

N is the save number from the log. It goes up by one on every save, so the highest number in the folder is the most recent save. The .ok file is the part worth understanding: it is written after the rest of that save, which is what makes it a useful sign that the set is complete. A _main.N.fwl2 without a matching _main.N.ok beside it belongs to a save that may not have finished.

The chunk files are named after areas of the map, and only areas that have been visited and changed get one. A brand new world has a handful; a world a group has played for weeks has dozens. The Dedicated folder in the listing is the world name the stock start script uses, and it usually means the server was started once before somebody filled in the world name. It is a separate, almost empty world and safe to ignore.

Where the folder is on a dedicated server#

The world folder sits under the user profile of whoever runs the server process, in Unity's settings directory:

SystemDefault path
Linux~/.config/unity3d/IronGate/Valheim/worlds_local/
Windows%USERPROFILE%\AppData\LocalLow\IronGate\Valheim\worlds_local\
Pterodactyl egg/home/container/.config/unity3d/IronGate/Valheim/worlds_local/

On older installs the last folder can be worlds rather than worlds_local; check both if the first is empty. If the server is started with -savedir, everything moves under that directory instead, and that argument is the first thing to check when the folder you expected is empty. The launch arguments reference lists it with the rest.

On a Linux server you control, you can confirm the layout in one command:

bash
$ ls -la ~/.config/unity3d/IronGate/Valheim/worlds_local/$ ls -t ~/.config/unity3d/IronGate/Valheim/worlds_local/Midgard/*.fwl2 | head -1

The second line prints the newest metadata file, which is the one you want. Replace Midgard with your world name exactly, capitals included - the folder name is the -world value.

On a hosted server with a web file manager, the path is the same one shown in the Pterodactyl row, minus /home/container. The .config folder starts with a dot, so some file managers hide it. On RE:NODE the file manager shows it, and the same files are reachable over SFTP with the credentials on the server's settings page.

Reading the seed out of the .fwl2 file#

The seed is plain text inside a small binary file, which makes reading it easy and editing it a bad idea.

  1. Find the world folder and pick the _main.N.fwl2 with the highest N that also has a _main.N.ok.
  2. Download it. Do not open it in a browser-based editor, even to look - see the warning below.
  3. Open the downloaded copy in a plain text editor such as Notepad, TextEdit or VS Code.
  4. Near the start you will see the world name, then a short run of letters and digits. That run is the seed.

Most of the file will look like random symbols, because it is binary. What you are looking for is two readable words close together at the top: Midgard followed almost immediately by Fj3kQ9mXa2. The seed is normally ten characters, mixed upper and lower case, and it is case-sensitive: fj3kq9mxa2 is a different world.

If you are comfortable with a terminal, there is no need to download anything. strings prints the readable pieces of a binary file, and the first two are the name and the seed:

bash
$ strings -n 3 _main.435.fwl2 | head -2MidgardFj3kQ9mXa2

What the first bytes actually are

If you want to read it with a script, or check that a file is not damaged, the start of the file has a simple, fixed shape. All numbers are little-endian.

BytesMeaningExample
4Length of the rest of the file6b 01 00 00 (363)
4Metadata format version2a 00 00 00 (42)
1 + nWorld name, length first07 then Midgard
1 + nSeed text, length first0a then Fj3kQ9mXa2

The text fields are .NET-style strings: a length, then that many UTF-8 bytes. For anything as short as a world name or a seed the length is a single byte. The first number is worth checking: on a healthy file it equals the file size minus four, so a truncated download or a file mangled by an editor gives itself away immediately. After the seed comes a number the game derives from it and further fields we do not rely on. The version number on our servers is 42 today; treat it as something that changes between game versions, not a constant.

A short Python script reads it reliably and works on old .fwl files too, since they start the same way:

valheim_seed.py
import struct, sysdata = open(sys.argv[1], "rb").read()length, version = struct.unpack_from("<ii", data, 0)pos = 8def read_string(pos):    size = shift = 0    while True:        byte = data[pos]; pos += 1        size |= (byte & 0x7F) << shift; shift += 7        if byte < 0x80:            break    return data[pos:pos + size].decode("utf-8"), pos + sizename, pos = read_string(pos)seed, pos = read_string(pos)print(f"world={name} seed={seed} version={version} intact={length == len(data) - 4}")
bash
$ python valheim_seed.py _main.435.fwl2world=Midgard seed=Fj3kQ9mXa2 version=42 intact=True

Which copy to trust: saves and backups#

A busy world folder holds one current set of files, and the server keeps making backup folders beside it. The backup folders are named WorldName_backup_auto-YYYYMMDD-HHMMSS, and how many exist and how often they appear is controlled by the -backups, -backupshort and -backuplong launch arguments. Each one is a complete world folder in the same layout, with its own _main.N.fwl2.

For finding the seed, any of them will do: the seed never changes for the life of a world, so the oldest backup and the newest save carry the same string. That is useful when the current folder is in a bad state. If the newest .fwl2 fails the length check, read the one in the latest backup folder instead.

For restoring, the order matters more:

  • Use the current folder if its newest _main.N.fwl2 has a matching .ok.
  • Otherwise take the most recent _backup_auto- folder, which was a finished save when it was made.
  • Stop the server before swapping folders, or it will write its next save over whatever you put back.

How often the main save happens is -saveinterval, in seconds, with a default of 1800 - every half hour. A crash loses at most that much play. Our backups and world corruption guide covers restoring in detail. The one rule to take from it here: a backup that lives on the same disk as the world protects against a bad save, not against losing the disk.

Getting the seed when you play on PlayStation or Xbox#

Since crossplay arrived, console players can join the same servers as PC players, and the usual advice - "select the world in your world list, the seed is shown there" or "open the .fwl in Notepad" - does not apply to them. A console player joining someone else's dedicated server never has the world files at all. The world exists only on the server, and the console client has no way to browse it.

So the answer for a console player is to ask whoever runs the server. If that is you and somebody on PlayStation is asking, it takes a minute:

  1. Open the server's file manager or connect over SFTP.
  2. Go to .config/unity3d/IronGate/Valheim/worlds_local/ and open the folder with your world's name.
  3. Download the newest _main.N.fwl2, or run strings on it if you have a shell.
  4. Send them the ten characters, exactly as they appear.

It helps to send a link to a map viewer along with it. Sites such as valheim-map.world take the seed and draw the whole world, biomes, bosses and traders included, and they work in a phone browser, which matters to somebody with no PC. Remind them that the map shows the world as it was generated, not what has been built or dug since. Our seeds guide covers what is worth checking on a map viewer once you have the seed.

If you are a console player on a server you do not run, ask the owner, or on a rented server the host's support. Give them the server's name as it appears in the browser and, if you know it, the world name. Both are in the server's settings, so they can find the right folder even if the host runs hundreds of worlds.

Changing or setting a seed#

There is no way to change the seed of an existing world, and the dedicated server has no seed argument at all. Every server option is a launch argument, and none of them takes a seed. If -world names a folder that does not exist, the server creates a new world under that name with a random seed and logs it - which is also how a wrong world name looks exactly like a wiped world.

To run a server on a specific seed, you create the world on your own PC with that seed, start it once so the files are written, and upload the result into the server's worlds_local. The upload guide walks through that. Two points specific to the new layout:

  • Upload the whole folder, named exactly as the server's -world value.
  • Check which layout your local game wrote. If your PC produced .fwl and .db files and the server expects folders, or the other way round, stop and update both to the same game version before uploading, rather than mixing files.

Editing the seed text inside a .fwl2 to "change" the seed does not work and is the quickest way to corrupt a world. The length field and the stored world state both depend on the original. Treat the file as read-only.

Troubleshooting#

A search for `.fwl` finds nothing. The server is on the folder layout. Search for *.fwl2, or open worlds_local and look inside the folder named after your world.

There is a `Dedicated` folder and no other world. The server is running without a world name set, so it is playing a world called Dedicated. If your group has been playing on it, that is your world and its seed is in Dedicated/_main.N.fwl2. If not, check the world name in the startup settings and the -savedir path.

The world folder exists but has no `.fwl2` in it. Either the server has never completed a save, or the listing you are looking at is cut short. Wait for the next save - the log prints World save (5/5) done - and look again. If the log shows saves and the folder stays empty, the server is writing somewhere else, which almost always means -savedir.

The seed looks like nonsense or has odd characters. You are probably reading the numeric field after the seed, or the file was opened with a strange encoding. Use strings or the script above, which read the exact bytes.

The length check fails. The download was interrupted or the file was saved through an editor. Download it again; if the server's own copy fails, read the seed from the latest _backup_auto- folder and look at the crash-on-start guide before the next restart.

The map viewer shows a world that does not match. Check the case of every letter first, then make sure the seed came from the world you are playing - a server can hold several world folders, and the one it loads is whatever -world says.

FAQ#

Can I find my Valheim seed with a console command?

Not on a dedicated server you only connect to as a player. The reliable source is the world's metadata file on the server. If you have the world locally, the world list in the game shows the seed when you select it.

Is the seed the same in every backup?

Yes. The seed is fixed when the world is created and never changes, so every backup folder and every save number carries the same string. That makes a backup a safe place to read it from when the current files look damaged.

Do I need the .db2 and chunk files to read the seed?

No. The seed is only in the .fwl2, a file of a few hundred bytes, so that is the only file you need to download. Every other file only matters when you are moving or restoring the world.

Does a PlayStation player need anything from the server files?

No. Console players need only the seed text, which they can paste into a map viewer in a browser. The world files are useless on a console, so send the string rather than the file.

Will my old .fwl and .db pair still load on a new server?

We cannot promise it for every version, so do not test it on your only copy. Keep the original pair somewhere safe, upload a copy to a stopped server, start it, and check the log before you delete anything.

Was this helpful?