DriversRecommendedOutdated drivers can make a good PC feel brokenScan driver issues before chasing fixes manually.Scan NowHalloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsWindows FixRecommendedWindows errors stealing your time? Find the fix fastScan stability, cleanup and performance issues.Fix Now×
Skip to content
World desk12 min

How to Install a Custom Map on a Factorio Server (Save ZIP, Scenario, or Map Exchange String)

Learn which Factorio custom-map format you have, where to copy it, which headless command to run, and how saves, scenarios, map exchange strings, JSON settings, and mods differ.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The correct installation method depends on what you received. A progressed Factorio world is a save ZIP: copy it to the server and launch it with --start-server. A scenario is installed in the user-data scenarios directory and can be started with --start-server-load-scenario. A map exchange string contains map-generation settings for a new world; it does not contain an explored factory or its current progress.

Choose the right custom-map format

Before uploading anything, identify whether the creator gave you a save, a scenario, or a map exchange string. These formats preserve different parts of a game and require different server commands.

As an Amazon Associate I earn from qualifying purchases.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Method What it preserves Best for Main dependency
Save ZIP The explored world, buildings, inventories, research, and current progression A downloaded world or an existing cooperative factory A matching Factorio version and mod set
Scenario A scenario map and its runtime scripting Missions, challenges, tutorials, and server-side objectives The scenario folder and compatible content
Map exchange string Map-generation settings for a fresh map Recreating terrain, resources, enemy settings, or a seed-like configuration Creating a new map; it carries no previous exploration
JSON settings Explicit map-generation and simulation configuration Repeatable, scripted map creation --create and correctly structured JSON files

If the package contains a .zip save, use the save workflow even if the creator calls it a “custom map.” If it contains a directory with files such as control.lua, it is likely a scenario. If it is one long encoded string, it is a map exchange string.

Prepare the dedicated server

Install the correct Factorio release

Use the same Factorio release that created the world whenever possible. A save may fail to load, or may open with missing content, when the server is on a different release or when required mods are absent. Check the server binary before migrating the world and record the version used by the map creator.

#1 Best Overall
Sale
CyberPowerPC Gamer Xtreme VR Gaming PC, Intel Core i5-13400F 2.5GHz, GeForce RTX 5060 8GB, 16GB DDR5, 1TB PCIe 4.0 SSD, WiFi Ready & Windows 11 Home (GXiVR8060A40)
  • System: Intel Core i5-13400F 2.5GHz 10 Cores | Intel B760 Chipset | 16GB DDR5 | 1TB PCIe 4.0 NVMe SSD | Windows 11 Home
  • Graphics: NVIDIA GeForce RTX 5060 8GB Graphics | 1x HDMI | 2x DisplayPort
  • Connectivity: 1 x USB-C 3.2 | 2 x USB-A 3.2 | 6 x USB-A 2.0 | 1 x LAN | WiFi 6 | Bluetooth 5.3 | 7.1 Channel Audio
  • Tempered Side Case Panel | Custom RGB Lighting | Keyboard and Mouse
  • 1 Year Parts & Labor Warranty, Free Lifetime Tech Support

On Linux, use the headless package when the machine does not need graphics. The official multiplayer guidance recommends a dedicated non-root user, extracting the package into that account’s directory, and testing the executable. A message that the save cannot be found generally means the binary is running and the next task is to upload the save at the path you supplied. This package is also suitable for a third-party hosted server, provided you can place files and run the Factorio process under the host’s service account.

Locate the server’s data directories

The commands below assume the binary is ./bin/x64/factorio, the working directory is the extracted server directory, and saves are kept in ./saves. You can instead provide an absolute path. The path must be readable by the account running the server.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • saves: normal save ZIP files used by --start-server.
  • data: bundled data and the standard location for server-settings.json in the documented examples.
  • User data scenarios: scenario directories available to the standalone game and headless server.
  • player-data.json: credentials and player-related data used when headless mod synchronization needs authenticated service access.

Stop any existing instance first

Do not replace a ZIP while a server is writing to it. Stop the old instance cleanly, wait for the process to exit, and then copy the new save. Keep the original file as a backup before changing mods, removing scenario files, or opening the world with a newer game release.

Check ownership and paths

Uploads made by an administrator can end up owned by a different account from the one that runs Factorio. Make the save, scenario directory, and settings files readable by the service account, and use the same working directory in startup scripts that you use when testing manually. An explicit absolute path is useful when a panel or system service starts Factorio from an unexpected directory.

Install a downloaded or existing save ZIP

This is the usual method for a progressed custom world. The ZIP itself contains the map state; do not unzip it into a new scenario directory.

Step 1: obtain and verify the save

  1. Obtain the Factorio save in its original .zip form.
  2. Check that the archive is complete and can be opened by a local Factorio installation if possible. Do not rename the extension to another archive format.
  3. Confirm the creator’s Factorio version and mod list. If the world was made with mods, obtain those exact mods or an equivalent synchronized set before launching.

Step 2: copy the ZIP to the server

Place the file in the server’s saves directory, or use any readable relative or absolute path. For example, a file named my-save.zip in ./saves is referenced as ./saves/my-save.zip. Preserve a second copy outside the live directory as your rollback backup.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Step 3: start the named save

From the Factorio server directory, run:

./bin/x64/factorio --start-server ./saves/my-save.zip

The server now loads that exact world. An explicit filename is safer than relying on whichever ZIP happens to be newest, particularly when several test worlds are present.

Step 4: optionally load the newest save

For an automated setup that intentionally uses the newest save, use:

./bin/x64/factorio --start-server-load-latest --server-settings ./data/server-settings.json

This option is convenient for a single-world server with a predictable save directory. If it selects an unexpected world, return to an explicit --start-server path so there is no ambiguity.

What a save migration preserves

A save ZIP preserves the explored terrain and the state built on it, rather than merely repeating the original generation recipe. That includes the current factory layout, research and other progression recorded in the save. A map exchange string cannot reproduce those changes.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

First launch checks

Watch the server log through the first load. Confirm that the expected save name appears, that no required-mod warning is reported, and that the process reaches its normal listening state. Join with a client using the same release and enabled mods, then make a small test save or controlled change before announcing the server. This confirms that the uploaded ZIP is writable and that the account can create the normal autosave files.

Create a fresh map from JSON settings

Use JSON when you want a new world generated from deliberate, repeatable settings rather than an existing explored save. The map-generation file controls world-generation choices such as terrain, resource frequency, and dimensions. The map-settings file controls simulation behavior such as pollution and enemy evolution.

Prepare the two files

Create valid JSON files named, for example, map-gen-settings.json and map-settings.json. Keep the files with the server configuration so the same world recipe can be recreated later. A malformed or incomplete object can cause creation to fail or produce settings different from those intended.

Create the save

Run:

./bin/x64/factorio --create saves/custom-map.zip --map-gen-settings map-gen-settings.json --map-settings map-settings.json

This creates a new save at ./saves/custom-map.zip. Start that file with the normal save command:

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #2
ZER-LON Prebuilt Gaming PC Desktop, Core I7 up to 3.9 GHz, RX 550 4GB GDDR5
  • 【PC Gaming System】This gaming PC is loaded with Intel Core I7 up to 3.9GHz and AMD Radeon RX 550 4G graphics card, allowing you to experience top-notch gaming performance. This system features 16GB of high-speed memory and 512GB SSD Solid State Drive for lightning-fast load times
  • 【Superior Gaminig Experience】This high-performance Gaming Computer Desktop is capable of running a wide range of popular PC games for pc gamer, including Fortnite, Call of Duty Warzone, Escape from Tarkov, GTA V, World of Warcraft, LOL, Valorant, Apex Legends, Roblox, Overwatch, CSGO, Battlefield V, Minecraft, Elden Ring, Rocket League, The Division 2, and Hogwarts Legacy with 60+ FPS
  • 【Multifunctional Use】This tower computers gaming pc desktop is designed to meet the needs of different people on the computer, powerful performance not only in the game to show quality graphics, the face of the office, design, audio and video can also be comfortable, multi-tasking, fast switching smooth operation
  • 【Tower Gaming PC Desktop】The gaming computer desktop is designed for versatile connectivity, featuring 2x USB 3.0 ports, 6x USB 2.0 ports, 1x RJ-45, 1x Serial, and built-in Wi-Fi. The AMD Radeon RX 550 4G GDDR5 Graphics Card supports multiple display options including 1x HDMI, 1x DisplayPort, and 1x DVI, ensuring compatibility with a wide range of monitors
./bin/x64/factorio --start-server ./saves/custom-map.zip

JSON creation is useful for provisioning multiple servers consistently, but it does not import someone else’s explored factory. For that, transfer the original save ZIP instead.

When JSON is preferable

Choose JSON when an administrator wants configuration under version control, repeatable test worlds, or a scripted deployment that creates a clean save before starting the service. Keep the generation and simulation files alongside the startup script and record which Factorio release produced them. If a creator supplied only settings and no save, JSON is the faithful way to reproduce the requested setup.

Install and launch a scenario

A scenario is a separate format from a save. Scenarios are placed in the user-data scenarios directory and may include a control.lua script for runtime objectives and behavior. They do not add prototypes by themselves and do not require every client to install the scenario separately.

Install the scenario directory

  1. Stop the server.
  2. Copy the complete scenario directory into the user-data scenarios directory. Keep the directory name and internal files intact.
  3. If the scenario is supplied by a mod, install that mod and use the mod-qualified scenario name instead of copying files into an unrelated directory.
  4. Check the scenario’s supported Factorio release and any separate mod requirements.

A common upload mistake is creating scenarios/ScenarioName/ScenarioName/control.lua by extracting one directory too deep. The directory immediately below scenarios should be the scenario name, with its files directly inside it.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Launch from the graphical interface

In the Factorio client, choose Play then Scenarios, select the scenario, and create the multiplayer game. When you choose the scenario and save it, Factorio creates a normal save containing the map and scenario scripting. That resulting ZIP can then be moved to a headless server and launched with --start-server.

Launch directly on a headless server

The documented headless form is:

./bin/x64/factorio --start-server-load-scenario [MOD/]NAME

Replace NAME with the scenario name. The server resolves it from the top-level scenarios directory or, when applicable, from the specified mod using the MOD/NAME form. This starts the scenario directly rather than loading an already-created save.

Scenario versus mod

Do not treat a scenario folder and a mod as interchangeable. A scenario provides a map and runtime scripting; a mod can change game data and prototypes and is a separate dependency. If the scenario’s scripting expects a particular mod, install or synchronize that mod before starting.

Use a map exchange string

A map exchange string is a compact representation of map-generation settings. It is appropriate when you want a fresh map with the same generation choices as another player’s map. It does not include the explored state, buildings, inventories, research, or other progression from an existing save.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Copy a string from the Factorio interface

  1. Open the Load Game screen.
  2. Select the map whose generation settings you want to share.
  3. Choose the map exchange-string button and copy the complete value.
  4. When creating a new game, paste the value into the map-exchange field and generate the map.

Keep the entire string, including its delimiters. Missing characters can produce a different map or make the value invalid. If the original world is already developed, ask for its save ZIP instead.

Convert the string for scripted creation

For a scripted workflow, the command-line reference documents this in-game console command:

/c helpers.write_file('map.txt', helpers.table_to_json(helpers.parse_map_exchange_string("<your exchange string here>")))

Open the resulting map.txt, copy its map_settings and map_gen_settings objects into separate JSON files, and pass those files to --create:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
./bin/x64/factorio --create saves/custom-map.zip --map-gen-settings map-gen-settings.json --map-settings map-settings.json

The generated save is new. The conversion reproduces settings, not the state of the source world.

Install and synchronize required mods

Mods are an independent dependency for all three workflows. A save or scenario can reference mods that are not bundled in the ZIP or scenario directory. Align the server’s Factorio release, scenario version, and enabled mod list with the package before loading it.

  • Install the exact required mod versions when the map depends on them.
  • Do not remove a scenario or deeply integrated mod from a live world without a backup; the save may no longer load or may lose expected behavior.
  • When a headless server must download mods, use the documented --sync-mods option and provide the required service credentials in player-data.json.
  • After synchronization, verify that the server and connecting clients have compatible enabled mods and versions.

A scenario that contains only runtime scripting does not automatically install unrelated mods. Conversely, installing a mod does not turn a map exchange string into a progressed world. Synchronize before the first launch rather than troubleshooting missing prototypes after the save has already been opened and rewritten.

Rank #3
Sale
Mumba Mouse Grip for Nintendo Switch 2 Joy-Con, [2 Pack] Ergonomic Gamer Grip Holder with Super Smooth PTFE Glide Pads Portable Gaming Controller Stand for Switch 2 Joy Con Accessories (2025), Black
  • Compatibility: Designed specifically for the Nintendo Switch 2 Joy-Con controllers, with dedicated left and right grips. It provides a more comfortable and precise control experience for smoother gameplay.
  • Ergonomic Design: This comfortable Switch 2 controller grip is designed to fit the shape of your hand, with finger grooves for a stable and secure grip, helping you stay relaxed during long gaming sessions.
  • Zero Resistance: The precision-crafted ABS shell and unique Teflon feet provide an ultra-smooth movement experience, making your control more precise. Whether it's shooting, strategy, or simulation games, you can enjoy an intuitive and seamless connection with the game.
  • Quick & Easy Setup: Align the "+" and "-" buttons on your Switch 2 Joy-Con with the corresponding markings on the mouse grip, then snap it into place for immediate use, so you’re ready to game in seconds with enhanced precision.
  • Lightweight and Portable: Weighing only 34.2g, it’s easy to carry and lets you enjoy a professional-grade gaming experience anytime, anywhere.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Configure the server after the map is installed

Use server-settings.json for the server’s multiplayer behavior rather than embedding those choices in the map itself. The documented settings include the server name, description, tags, player limit, visibility, and credentials. Supply the file when starting the server, for example:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
./bin/x64/factorio --start-server ./saves/custom-map.zip --server-settings ./data/server-settings.json

Keep the settings file readable by the service account and validate its JSON syntax before launching. A custom map can load correctly while still being private or absent from public listings if visibility and listing fields are not configured. If you move the server between machines, copy this file separately; it is not stored in the save ZIP.

Troubleshoot common installation failures

“Cannot open save” or “save cannot be found”

  • Check the spelling, capitalization, and extension of the filename.
  • Use an explicit absolute path to rule out a different working directory.
  • Confirm the server account can read the directory and ZIP.
  • Verify that the archive is intact and was not truncated during upload.
  • Make sure the old server process is stopped before replacing a live save.

The map loads but content is missing

Compare the server’s Factorio release and enabled mod versions with those used to create the save. A scenario and a mod have different installation rules: check the scenario directory separately, then check the mod set and, if needed, run headless synchronization with valid credentials.

The generated map does not match the creator’s map

Use the complete map exchange string, including its delimiters, or transfer the actual save ZIP. The string only reproduces generation settings; it cannot restore explored areas or factory construction.

The latest-save option starts the wrong world

Replace --start-server-load-latest with --start-server and the exact intended ZIP path. The latest-save mode is directory-based and is unsuitable when several worlds are present.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The scenario is not listed

Confirm that the scenario directory is in the user-data scenarios location, that its internal files were not nested one directory too deep, and that the scenario supports the installed Factorio release. For a mod-provided scenario, use the qualified MOD/NAME launch form and install the parent mod.

Players cannot find the server publicly

Review server-settings.json, especially the name, description, tags, player limit, visibility, and credentials fields. A correct save path does not automatically make a server publicly listed.

The server starts but players cannot join

Check that clients use the same Factorio release and required mod versions as the server. For a scenario launched directly, verify that the scenario’s parent mod, if any, is enabled. If the server is intentionally private, confirm its visibility setting before treating the absence from the public list as an installation failure.

Safe migration checklist

  • Identify the package as a save ZIP, scenario, map exchange string, or JSON settings.
  • Record the Factorio release and required mod versions.
  • Stop the current instance cleanly.
  • Back up the original save before migration or mod changes.
  • Copy saves to saves; copy scenarios to the user-data scenarios directory.
  • Use --start-server for an existing save, --start-server-load-scenario for a scenario, or --create for new JSON-generated maps.
  • Use an explicit save path when more than one world exists.
  • Configure server-settings.json for listing and multiplayer limits.
  • Test the server with the required mods enabled before inviting players.
  • Retain the original ZIP and the generation/settings files until players have confirmed the migration works.

Frequently Asked Questions

Can I use a map exchange string on a dedicated server?

Yes, but it creates a fresh map from generation settings. Paste it when creating a new game, or convert it to map-gen-settings.json and map-settings.json and run --create. It cannot transfer an explored factory.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

How do I upload a Factorio save to a headless server?

Stop the running instance, copy the original .zip into the server’s saves directory, confirm the Factorio release and mods, then run ./bin/x64/factorio --start-server ./saves/your-save.zip. Keep a backup outside the live directory.

Do players need to install a scenario?

A scenario itself does not require every client to install it separately. Install the complete scenario in the server user-data scenarios directory. Any separate mod required by its script remains a dependency for the server and connecting clients.

What is the difference between a scenario and a save?

A scenario is a reusable map package that can include control.lua runtime scripting. Choosing it and saving creates a normal save ZIP containing the current scenario world. A save ZIP is the persisted world you launch directly with --start-server.

Why does the server say it cannot find my save?

Check the filename, extension, working directory, permissions, and ZIP integrity. Use an absolute path after --start-server, and make sure another Factorio process is not still using or replacing the file.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

How do I make the custom map visible to other players?

Pass a valid server-settings.json when starting the save and configure its name, description, tags, player limit, visibility, and credentials. Loading the map alone does not publish the server.

The Bottom Line

Use the format you were given: launch a progressed .zip with --start-server, install a scenario in user-data scenarios and launch it with --start-server-load-scenario, or use a map exchange string and JSON files to generate a new world. Match the Factorio release and mods, stop the old instance before replacing files, keep backups, and configure server-settings.json separately for multiplayer visibility and limits.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Outdated Drivers Are Slowing You DownFree scan - exact matches

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.