Bookmark Host Configuration
The Bookmark Host feature allows players to save a server as a bookmark so they can find it even after an IP or port change. By default, Steam's built-in Favorites and History server lists remember servers by their IPv4 address and port combination. If either changes, the link is broken. Steam mitigates this if a GSLT is assigned by automatically updating the saved address, but this does not happen in real time. The Bookmark Host property provides a more reliable alternative, particularly for servers using Fake IP where both the address and port change after every restart.
57 Studios™ has documented the complete Bookmark Host configuration workflow based on the official SDG documentation. This article covers the two configuration formats (DNS entry and custom web API), the LoginToken requirement, the Pandahut reference implementation, and troubleshooting common issues.

Documentation source: This article references the official Smartly Dressed Games modding documentation Chapter 120 (Bookmark Host).
Who this article is for
This article is written for server operators who want their players to be able to bookmark the server despite changing IP addresses, operators using Fake IP who need a bookmarking solution, and anyone managing servers with dynamic IPs.
How bookmarks work
Steam's Favorites and History lists save servers by their IP address and port. When a server changes its address, the bookmark is broken. The Bookmark Host feature solves this by using a persistent identifier (a DNS name or a custom API endpoint) that players can save instead of the raw IP address.
The client saves custom per-server bookmark data when a GSLT is present, using the stable persistent ID that the GSLT provides.
Configuration formats
Format 1: DNS entry
Set BookmarkHost to a DNS entry with an A record pointing to the server's public IP:
BookmarkHost myunturnedserver.example.comThe client saves the server's current port number along with the DNS name. The IP address can change (if using dynamic DNS) but the port cannot.
This format is not applicable for servers using Fake IP because both the IP and port are randomly assigned after each restart.
Format 2: Custom web API
Set BookmarkHost to a URL beginning with http:// or https://:
BookmarkHost https://api.example.com/server-addressThe client performs a GET request to the specified URL. The response must be plain text containing the server's address and optionally the port. Valid response formats:
127.0.0.1127.0.0.1:27015myunturnedserver.example.commyunturnedserver.example.com:27015
This format works with Fake IP because the web API can return the current Fake IP address and port.
Configuration requirements
The BookmarkHost property must be configured alongside a LoginToken (GSLT). The GSLT provides the stable persistent ID that the client uses to associate data with the server.
Login_Token <your-gslt-token>
BookmarkHost <your-bookmark-host-value>Pandahut example implementation
The hosts of Pandahut have generously shared an example implementation consisting of:
- A server plugin that updates the latest server address on a custom backend
- A web request handler that serves the latest address to clients
The implementation is available as the BookmarkHostPlugin by PandahutMushy. The official documentation notes that SDG does not necessarily recommend using this program as-is; it is provided as an example.
Diagnostic table
| Symptom | Most likely cause | Resolution |
|---|---|---|
| Bookmark button not visible | LoginToken not configured | Set Login_Token in the server configuration |
| Bookmark does not save address | BookmarkHost not set | Set BookmarkHost to a DNS entry or API URL |
| API endpoint not responding | Web server is down or URL is wrong | Verify the URL is correct and the server is running |
| DNS bookmark does not update after IP change | DNS TTL is caching the old address | Reduce DNS TTL or use the API format |
| Fake IP server bookmark not working | DNS format not compatible with Fake IP | Use the web API format instead |
| Port not updating with IP | API response does not include port | Include the port in the API response |
Best practices
- Always configure
LoginTokenbeforeBookmarkHost. - Use the web API format for Fake IP servers.
- Ensure the API endpoint returns a response in plain text format.
- Test the bookmark flow from a client outside the server's network.
- Document the bookmark URL in the server's public information.
Frequently asked questions
Is Bookmark Host compatible with Fake IP?
The DNS entry format is not compatible with Fake IP because both the IP and port change. The web API format is compatible as the API can return the current Fake IP address.
Do I need a GSLT for Bookmark Host?
Yes. The LoginToken is required. The GSLT provides the stable persistent ID that the client uses to associate bookmark data with the server.
Can I use both Steam Favorites and Bookmark Host?
Yes. The Bookmark Host feature is an alternative to the Steam Favorites and History lists. Servers with a GSLT automatically get Steam's built-in favorites transfer within approximately 24 hours.
How often does the client query the Bookmark Host API?
The client queries the API when the player clicks the bookmark or bookmark refresh button. The query is not automatic; it is triggered by the player's action.
What format should the API response use?
The response must be plain text. Valid formats are a bare IP address, an IP address with port, a hostname, or a hostname with port.
Appendix A: External references
- Smartly Dressed Games official modding documentation - the official Bookmark Host guide.
- Unturned on Steam - the Unturned store page.
- Game Server Login Tokens (GSLT) - GSLT configuration.
- Glazier / Steam Datagram Relay - the previous article.
- Workshop Update Monitor Reference - the next article.
Integration with other systems
This configuration interacts with several other Unturned systems that the mod author should be aware of when designing content.
Interaction with the asset definition system
Every configuration file must include the required identity fields that the asset definition system uses to register the asset in the game's registry. Without these fields, the asset is not recognized by the game and will not appear in any system that references it.
Interaction with the localization system
Configuration files that display text to the player must be paired with localization files. The English.dat file provides the default language display values. Additional language files can be added for multilingual support.
Interaction with the master bundle system
Configuration files that reference Unity assets must use master bundle pointers correctly. The asset path in the pointer must match the path in the master bundle's manifest. A mismatch causes the asset to fail to load without crashing the game.
Interaction with the validation system
The game validates configuration files during the loading phase. Validation errors produce warnings in the console but do not prevent the game from starting. The affected asset may use default values for invalid fields.
Performance considerations
Configuration file performance is determined by the complexity of the referenced assets and the number of active instances in the game world.
Memory footprint
Each loaded asset occupies memory proportional to its data size. Configuration files are small (a few kilobytes each) and do not significantly impact memory usage. The memory impact comes from the Unity assets (models, textures, audio) that the configuration files reference.
Loading time
The game parses all configuration files during the initial loading phase. The total parsing time is proportional to the total number of configuration files and their complexity. For most mods, this overhead is negligible (milliseconds to low seconds).
Runtime performance
The runtime performance impact of a configuration file is zero for static properties and minimal for properties that are evaluated per-frame. Field values are cached after the initial read and are not re-read each frame.
Testing and validation
A structured testing approach ensures that every configuration value produces the expected behavior.
Unit testing
Test each configuration field independently by changing one value at a time and observing the result. This isolates the effect of each field and makes it easy to identify which field is responsible for unexpected behavior.
Integration testing
Test the complete configuration with all fields set to their intended values. Verify that the combination of fields produces the expected overall behavior.
Regression testing
After making changes, re-test previously working behavior to confirm that the changes did not break existing functionality. A change that fixes one issue should not introduce new issues in unrelated areas.
Stress testing
Test the configuration under high-load conditions (many concurrent players, rapid interactions) to verify that no performance issues or crashes occur.
Common authoring mistakes
Mistake 1: Missing identity fields
The most common authoring mistake is omitting required identity fields. Without a GUID, Type, and ID, the asset cannot be registered in the game's asset registry.
Mistake 2: Incorrect Type values
The Type field must match the expected value for the asset class being defined. An incorrect Type value causes the parser to misread the configuration fields.
Mistake 3: GUID collisions
Two assets with the same GUID cause the later-loaded asset to overwrite the earlier one. Generate fresh GUIDs for every new asset and never reuse GUIDs.
Mistake 4: ID collisions
Two items with the same ID within the same category cause unpredictable behavior. Use IDs in the 50000+ range to avoid collisions with vanilla and established community mods.
Mistake 5: Invalid field values
Field values must match their expected types. A string value in a numeric field is silently ignored and replaced with the default value.
Mistake 6: Unbalanced braces
Dictionaries opened with { must be closed with }. Lists opened with [ must be closed with ]. Unbalanced braces cause parsing errors that prevent the asset from loading.
Mistake 7: Incorrect master bundle pointers
The AssetPath in a master bundle pointer must match the path in the bundle's manifest exactly. Even a single-character difference causes the reference to fail.
Mistake 8: Missing localization files
Assets that display text to the player should have a corresponding English.dat file. Without it, the asset may display an internal identifier instead of a user-friendly name.
Design patterns
The completeness pattern
Before declaring a configuration file complete, verify that every field that has a documented default value has been explicitly considered. Some fields should use their defaults; others need explicit values. The decision should be intentional.
The documentation pattern
Maintain a project-level documentation file that records the purpose and expected values for every field in every configuration file. This documentation helps other mod authors understand the design intent.
The version control pattern
Store all configuration files in a version control system (Git). Every change is tracked with a commit message that explains why the change was made. This creates a complete history of the project's evolution.
The peer review pattern
Before finalizing a configuration, have another mod author review the file. A reviewer may spot errors that the original author missed, particularly in field values that were changed recently and may have unintended interactions.
Frequently asked questions (continued)
How do I know if my configuration file is correct?
The game logs any parsing errors or validation warnings during startup. Check the console output after launching the game. If no errors or warnings related to your mod appear, the configuration file is syntactically correct.
What happens when a field is omitted from a configuration file?
The parser assigns the default value for that field. Default values are documented in the field reference tables in this knowledge base. If you omit a field, the behavior may not match your intent.
Can I include comments in configuration files?
Yes. Lines starting with // are treated as comments. Comments can also be added at the end of a line if the value is enclosed in quotes.
How do I create a minimal configuration file?
The minimal configuration file contains only the required identity fields (GUID, Type, ID) and the fields that must differ from their defaults. All other fields use their default values.
What is the difference between a .dat file and an .asset file?
.dat files use the original Unturned key-value pair format. .asset files use the newer format that supports dictionaries, lists, and quoted keys/values. Both formats are valid and the parser handles both.
Glossary
| Term | Definition |
|---|---|
| Configuration file | A text file containing key-value pairs that define an asset's properties. |
| Identity field | A required field (GUID, Type, ID) that identifies the asset to the engine. |
| Default value | The value used when a field is not explicitly specified in the configuration file. |
| Parsing error | An error that occurs when the file format is invalid or a value cannot be interpreted. |
| Validation warning | A warning that occurs when a parsed value is out of range or inconsistent. |
| Field reference | A table that documents each field's name, type, allowed values, and purpose. |
| Asset registry | The game's in-memory database of all loaded assets. |
| Master bundle pointer | A structured reference to an asset within a master bundle file. |
| Localization | The system for providing language-specific display text for assets. |
| Template | A pre-written configuration file with placeholder values. |
Implementation roadmap
Phase 1: Research
Read the relevant reference article for the asset type. Understand the purpose of every field before writing any configuration values.
Phase 2: Planning
List the required and optional fields that need values. Determine the correct values based on the intended behavior.
Phase 3: Authoring
Create the configuration file. Fill in the identity fields first, then the gameplay fields, then the optional fields.
Phase 4: Validation
Check the configuration file for syntax errors. Verify that all braces and brackets are balanced. Confirm that all values match their expected types.
Phase 5: Testing
Place the configuration file in the mod directory. Launch the game and check for errors. Test the asset's behavior in-game.
Phase 6: Iteration
Adjust field values based on testing feedback. Repeat phases 4 and 5 until the behavior matches the intended design.
Authoring checklist
Before finalizing a configuration file for publication, confirm the following items:
- [ ] All identity fields are present (GUID, Type, ID)
- [ ] GUID is unique and freshly generated
- [ ] Type field matches the expected asset class
- [ ] ID is in the 50000+ range
- [ ] All gameplay fields have intentional values (not accidentally omitted)
- [ ] Master bundle pointers are correctly configured and paths match the manifest
- [ ] Localization file is present and contains the expected fields
- [ ] Testing has confirmed every field produces the expected behavior
- [ ] No parsing errors or validation warnings in the console
- [ ] The asset works in both single-player and multiplayer
Server-specific advanced topics
Server optimization for modded content
When running a server with multiple mods, optimize performance by bundling related assets together in fewer master bundles. Each master bundle adds to the server's memory footprint and loading time. Combine small mods into shared bundles where possible.
Server security with custom configurations
Custom server configurations should never expose sensitive information such as GSLT tokens or admin Steam IDs in publicly accessible files. Use the server's configuration file permissions to restrict read access.
Server update planning
Plan server updates to minimize player disruption. Schedule updates during low-traffic periods. Use the Workshop update monitor to automate update detection and restart procedures.
Troubleshooting guide
Problem: Server fails to start
If the dedicated server fails to start, check the console for error messages. Common causes include missing or corrupt configuration files, port conflicts with other applications, and insufficient disk space.
Problem: Players cannot connect
If players cannot connect to the server, check firewall settings, port forwarding configuration, and GSLT token validity. Verify that the server is running on the expected IP address and port.
Problem: Mods fail to load on the server
If mods load in single-player but not on the dedicated server, check that the mod files are in the correct directory on the server. The server's mod directory is typically separate from the client's mod directory.
Problem: Server performance degradation
If the server experiences performance degradation after adding mods, check the server resource usage (CPU, memory, disk I/O). Remove mods one at a time to identify which mod is causing the issue.
Frequently asked questions (continued)
How do I back up my server configuration?
Copy the entire Servers directory to a backup location. The directory contains all configuration files, save data, and logs. Back up before making significant configuration changes.
Can I run a server without a GSLT?
Yes, but the server will not appear on the Internet server list. Players can only join through the server code or Steam friends list.
What ports need to be open for Unturned servers?
The default ports are UDP 27015 (query port) and 27016 (game traffic port). These must be forwarded in the router and allowed through the firewall.
How many servers can I run on one machine?
The practical limit depends on the machine's hardware. Each server instance requires CPU time for game logic, memory for assets, and bandwidth for network traffic. A dedicated server machine can typically run 2-5 instances.
Should I use a static IP for my server?
A static local IP ensures that port forwarding rules do not break when the server's IP address changes. Most home routers support DHCP reservation, which assigns a static IP to a specific MAC address.
Configuration file management
Version numbering
Assign version numbers to each configuration file to track changes over time. Include the version number in a comment at the top of the file. When publishing updates, increment the version number and document the changes.
Change documentation
Maintain a changelog file alongside the configuration files. Record the date, version, author, and description of each change. This helps other mod authors understand how the configuration has evolved.
File naming conventions
Use consistent file naming conventions across all configuration files. The recommended convention is descriptive lowercase names with underscores separating words (snake_case).
Frequently asked questions (continued)
How do I roll back a configuration change?
Restore the previous version from version control. If version control is not in use, restore from a manual backup. This is why version control is strongly recommended.
What information should I include in a changelog entry?
Each changelog entry should include the date, the configuration file name, the changed field or section, the old value, the new value, and the reason for the change.
How do I share configuration best practices with my team?
Maintain a shared style guide document that records naming conventions, field ordering preferences, and commenting standards. Review pull requests to ensure compliance.
Operational considerations
Monitoring server health
Regularly check the server's resource usage (CPU, memory, disk space) to ensure it can handle the current player load. Set up automated monitoring that alerts the operator when resource usage exceeds thresholds.
Log management
The server generates log files that can grow large over time. Configure log rotation to archive old logs and free disk space. Review logs periodically for error patterns that may indicate configuration issues.
Player communication
Keep players informed about server maintenance, updates, and rule changes through in-game announcements, Discord, or a website. Clear communication reduces confusion and support requests.
Frequently asked questions (continued)
What should I do if a configuration file becomes corrupt?
Restore the file from the most recent backup. If no backup exists, reconstruct the file using the documentation and reference templates in this knowledge base.
How often should I back up server configuration files?
Back up at least weekly for low-activity servers and daily for high-activity servers. Always back up before making configuration changes.
What is the best way to test configuration changes before applying them to production?
Use a staging server that mirrors the production configuration. Test changes on the staging server first. If no staging server is available, test during low-traffic hours and have a rollback plan ready.
Security best practices
Credential management
Never store GSLT tokens, server passwords, or admin Steam IDs in publicly accessible locations. Use the server configuration file with appropriate file permissions. Rotate tokens and passwords periodically.
Network security
Use a firewall to restrict access to the server's ports to only the required protocols (UDP for game traffic). Close ports that are not in use. Monitor for unauthorized access attempts.
Data protection
Regularly back up server save data and configuration files to an offsite location. Test backup restoration periodically to confirm that the backup process is working correctly.
Frequently asked questions (continued)
Can I use the same configuration across multiple servers?
Base configuration can be shared, but each server should have its own unique GSLT, server name, map selection, and port configuration. Clone a template directory for each new server instance.
What is the most common server configuration mistake?
The most common mistake is forgetting to configure the GSLT, which prevents the server from appearing on the Internet server list. Always verify the GSLT configuration before announcing a new server.
How do I reset a server to default settings?
Delete the server's folder from the Servers directory and restart the server. The server generates fresh configuration files on the next startup. Note that this also deletes all save data.
Documentation and knowledge sharing
Creating server documentation
Document the server configuration, installed mods, and operational procedures in a shared document that all server administrators can access. Include connection information, admin commands, and troubleshooting steps.
Training new administrators
Create a training checklist for new server administrators that covers the basic configuration steps, common troubleshooting procedures, and escalation paths for issues that require developer intervention.
Community feedback integration
Establish a process for collecting and acting on player feedback about server configuration and mod selection. Regular community surveys help identify configuration issues that the server team may not notice.
Related reference materials
The following resources provide additional information about the topics covered in this article. Refer to these materials for deeper technical details and alternative configuration approaches.
Official SDG documentation
The Smartly Dressed Games official modding documentation at docs.smartlydressedgames.com provides the authoritative field reference for all Unturned asset types. Always check the official documentation when field behavior is unclear.
Community knowledge base
The 57 Studios Modding Knowledge Base at docs.57studios.net provides cohort-validated field references, best practices, and worked examples across all Unturned asset types and server configurations.
Game file references
The shipped game files in the Unturned installation directory provide the best reference for understanding how field values translate into in-game behavior. Cross-reference field values against vanilla files to understand the range and effect of each field.
Cross-references
- Glazier / Steam Datagram Relay - previous article.
- Workshop Update Monitor Reference - next article.
- Game Server Login Tokens (GSLT) - GSLT configuration.
- Fake IP Configuration - Fake IP bookmarking limitations.
Document history
| Version | Date | Author | Notes |
|---|---|---|---|
| 1.0 | 2026-07-26 | 57 Studios | Initial publication. Complete Bookmark Host configuration, DNS and API formats, GSLT requirement, Pandahut reference implementation. |
