- BlueMap for most servers: 3D in the browser, one download covers Paper, Fabric, Forge, NeoForge and Sponge, version 5.28 shipped September 25, 2026.
- Dynmap if you run an older version, a NeoForge-free modpack on Forge, or a host where a flat map is all the browser can take. Its newest builds (v3.8) date from January 2026.
- Both open their own web port (
8123and8100). Put it behind a subdomain with a reverse proxy, and turn off live player markers unless your players want to be found.
If you just want the recommendation: run BlueMap unless you have a specific reason not to. It renders your world in 3D in the browser, it runs on Paper, Spigot, Folia, Fabric, Forge, NeoForge and Sponge, and version 5.28 shipped on September 25, 2026 with support for Minecraft 26.1 through 26.3. Dynmap is the older, flatter map: 2D tiles you can pan and zoom, lighter to serve from a weak host, and the right choice if your server is on a version BlueMap no longer builds for.
Both are free. Both need a second port or a reverse proxy, both will fill your disk if you render everything, and both show where every player is standing unless you turn that off. This guide compares them properly, then covers setup for each, ports and subdomains, hiding players, and where to put the map link so it brings people in instead of just existing.
Dynmap vs BlueMap side by side
| What matters | Dynmap | BlueMap |
|---|---|---|
| Rendering | Flat and isometric 2D tile images, rendered on the server and served as pictures | A 3D model of the world drawn by the visitor's browser, with a flat view for weak devices |
| Runs on | Spigot, Paper, Fabric and Forge builds. No NeoForge build at the time of writing | Spigot, Paper, Folia, Fabric, Forge, NeoForge and Sponge, plus a standalone command-line renderer |
| Versions | The Modrinth page lists 1.10.2 through 1.21.x; the newest files there are v3.8 for 1.21.10 and 1.21.11, published January 14, 2026. The GitHub Releases page stopped being updated in 2021, so ignore it | 5.28 covers 26.1 to 26.3 on every platform, the command-line build goes back to 1.13.2, and it needs Java 25 |
| Storage | filetree (folders of tile images, the default), sqlite, mysql, mariadb or postgres | File storage by default, or SQL: SQLite, MySQL, MariaDB or PostgreSQL |
| Default web port | 8123 (webserver-port) | 8100 (port in webserver.conf) |
| Browser load | Light. Old phones and school laptops cope | Heavier. 3D wants a real GPU; the flat view helps on weak devices |
| Live players | A player faces layer you can hide by default or lock behind a web login | live-player-markers, with filters for vanished, sneaking and specific game modes |
| Bedrock | Java server side only. Bedrock players who join through Geyser appear like anyone else | Same. Neither one runs on Bedrock Dedicated Server |
The practical difference is who you are showing the map to. A survival or towny server whose players build big and want to show off gets more out of BlueMap's 3D view, and it is the one people screenshot. A server aimed at younger players on old hardware, or a modpack on a version BlueMap has moved past, is better served by Dynmap's plain tiles. On storage, expect gigabytes for an ordinary survival world on either, and tens of gigabytes if you pre-generate a huge world and render all of it, so render the parts people use and leave the rest.
One more difference matters for lag: Dynmap renders on the server and serves finished images, so a busy map costs you render time but almost nothing per visitor. BlueMap also renders on the server, but the heavy drawing happens in each visitor's browser. If your host is tight on CPU, both let you pause rendering during peak hours.
How to set up Dynmap
- Download the file for your platform and version from the Dynmap Modrinth page. There is one jar per platform per Minecraft version, so match both.
- Drop it into
plugins/ormods/and start the server once. It createsplugins/dynmap/configuration.txtand awebfolder. - Open
configuration.txt. The web server is on by default (disable-webserver: false) onwebserver-port: 8123. Storage defaults totype: filetree;sqlitekeeps everything in one file, andmysql,mariadborpostgreslet a separate web host read the tiles. - Open or allocate TCP 8123 on your router or hosting panel, or leave it closed and proxy it (next section).
- Render something.
/dynmap radiusrender 500renders 500 blocks around you, which is enough to see it working./dynmap fullrender worldrenders the whole world;/dynmap statsshows progress;/dynmap cancelrender worldstops it;/dynmap pause allpauses everything until/dynmap pause none.
How to set up BlueMap
- Download the build for your platform from the BlueMap site (or Modrinth). One jar covers every version that platform build supports.
- Start the server once. It creates
core.conf,webapp.conf,webserver.conf,plugin.conf, amaps/folder with one config per world, andstorages/. - In
core.confsetaccept-download: true. BlueMap downloads Minecraft's own textures from Mojang to draw blocks and will not render until you agree. Then/bluemap reload. - In
webserver.confthe built-in web server isenabled: trueonport: 8100, bound toip: "0.0.0.0". On a shared host, changeportto the extra port your panel gave you. - Let it render. BlueMap starts rendering on its own.
/bluemapshows status,/bluemap updatere-renders a world or a radius,/bluemap freeze <map-id>stops one map updating,/bluemap stopand/bluemap startpause and resume all rendering, and/bluemap purge <map-id>deletes a rendered map. - Pick storage. File storage is fine for one server. For a network, or when a separate web host should serve the map, use
storages/sql.conf:storage-typeandconnection-url, with SQLite, MySQL, MariaDB or PostgreSQL behind it.
Ports, subdomains and a reverse proxy
Both maps run a small HTTP server on their own port. You can share play.example.net:8100 and be done, but it is ugly, it has no HTTPS, and hosts that give you exactly one port make it impossible. The cleaner setup is a subdomain such as map.example.net served by a reverse proxy on the same machine, which also gets you a free certificate. If you have not set up a domain yet, start with the domain name guide.
BlueMap's own docs give the nginx block for a subdomain:
location / {
proxy_pass http://127.0.0.1:8100;
}
And the Caddy version, which handles the certificate for you:
map.example.net {
reverse_proxy 127.0.0.1:8100
}
Then set ip: "127.0.0.1" in webserver.conf so the map is only reachable through the proxy, not on the raw port. For Dynmap the same shape works with 8123: set webserver-bindaddress: 127.0.0.1 and add your proxy's address to trusted-proxies so Dynmap sees real visitor addresses instead of the proxy's.
Unlike the game port, the map is ordinary web traffic, so Cloudflare's orange-cloud proxy works for it and hides your server's address from map visitors. Keep the game address on a separate record, as the SRV record guide explains.
Hiding player positions
By default both maps show every online player's name and position, live. That is fun on a friends server and a problem on a public one: it tells strangers where every base is, when its owner is offline, and where a specific player is standing right now. Turn it off, or lock it down, before you publish the link.
- Dynmap, hide the layer by default. In
configuration.txt, theplayermarkerscomponent hashidebydefault: false; set it totrueand visitors have to switch the player layer on themselves. - Dynmap, require a login to see players.
protected-player-info: truehides positions and status unless the visitor logs in to the web UI with an account that hasdynmap.playermarkers.seeall. Good for a staff-only view. - Dynmap, per player.
/dynmap hidehides you,/dynmap hide PlayerNamehides someone else,/dynmap showreverses it.display-whitelist: trueflipshiddenplayers.txtinto a list of the only players shown. - BlueMap, off entirely. In
plugin.confsetlive-player-markers: false. Nothing about players reaches the web app. - BlueMap, selective.
hide-vanished: trueis the default;hide-sneaking: truegives every player a manual hide button (crouch);hidden-game-modestakes a list, so spectators and staff in creative can be excluded;hide-different-world: truekeeps players off maps of worlds they are not in.
Whatever you pick, say it in your rules. Players who know the map hides them while sneaking will use it. If your server is aimed at younger players, hiding positions by default is the only sensible setting; our guide on servers for kids covers what parents look for.
Put the map where players will find it
A live map is one of the few things a server can show a stranger before they join, so do not bury it. There is no map field on a 9MinecraftServer listing, but three places on it carry the link: the description (250 or more characters earns 2.5 of the 12 listing strength points, and on our list servers with a long description have a median of 20 players online against 11), the website link, and your Discord. On our list only 14% of servers have a website at all, and they run a median of 57 players against 10 for those without. That is a correlation, not a promise, but a map page is the easiest reason to have a website.
- Claim your listing from its server page (the code goes in your MOTD) so you can edit the description and links yourself.
- Embed the map on your site with an
<iframe>pointing at the subdomain, above a short paragraph on what the server is. The website guide has the rest of the page. - Add a
/mapcommand that prints the link, and a sign at spawn. New players ask "where is everyone?" and the map answers it. - Post screenshots from the map in Discord when someone finishes a big build. It is content you did not have to make.
Quick questions
Can I run Dynmap and BlueMap at the same time?
Yes, on different ports, and some servers do it to keep the light 2D map for phones. It doubles the render work and the disk use, so most owners should pick one.
Does BlueMap work on Bedrock?
It is a Java server plugin or mod, so it runs on Java servers only. Bedrock players who join through Geyser show up on it like anyone else and can open the map in any browser. There is no version of either map for Bedrock Dedicated Server.
Which one uses less RAM?
Settings matter more than the plugin. On both, the big savings are rendering fewer worlds, rendering a radius instead of the whole map, and pausing during peak hours. If you are already short of memory, read how much RAM a server needs before adding a map at all.
The map port does not load. What do I check?
In order: the port is open or allocated on the host, the plugin is bound to the right address (webserver-bindaddress or ip), and nothing else is using it. If you put it behind a proxy, test the raw port on the machine itself first, then the proxy.
