Skip to content
Back to Blog
Browser tab showing a 3D Minecraft world rendered by prismarine-web-client with blocks and player entities

Play Minecraft in Your Browser with prismarine-web-client

ice
ice
@ice
Updated
39 views
TL;DR:prismarine-web-client is an open-source browser-based Minecraft client that connects to real servers via a WebSocket proxy. Built on mineflayer and prismarine-viewer, it runs in Chrome or Firefox with no game install required.
GitHub · Minecraft community project

prismarine-web-client (PrismarineJS/prismarine-web-client)

Minecraft web client running in your browser

Star on GitHub ↗
⭐ 539 stars💻 JavaScript📜 MIT

Ever wanted to join a Minecraft server from a school Chromebook, a borrowed laptop, or any machine that doesn't have the game installed? prismarine-web-client solves exactly that problem. It runs a real Minecraft client inside a browser tab and connects to actual Minecraft servers, no local installation needed on the player's end.

What prismarine-web-client Is

This is not a simplified 2D clone or some Flash-era approximation of Minecraft. It's a genuine browser-based client built on two well-established PrismarineJS libraries: mineflayer handles the Minecraft protocol and client logic, while prismarine-viewer renders the 3D world. Together they make something that actually works.

The project sits at 539 stars on GitHub with an MIT license, which means it's free to use, fork, and modify however you like. It's written in JavaScript, which is part of why running it in a browser is even possible in the first place. The PrismarineJS ecosystem has been around for years and powers a lot of community automation tools and bots, so this isn't some weekend experiment with a broken dependency chain.

There's a live demo hosted on GitHub Pages. Open it in Chrome or Firefox on a desktop right now and connect to a server without installing anything. That's the simplest use case, and honestly a good way to understand what you're dealing with before you bother self-hosting.


The Tech Behind It (And Why It's Clever)

Here's where it gets genuinely interesting. Minecraft's protocol runs over TCP, and browsers simply can't open raw TCP sockets. So how does a browser-based client connect to a real Minecraft server at all?

Browser tab showing a 3D Minecraft world rendered by prismarine-web-client with blocks and player entities
Browser tab showing a 3D Minecraft world rendered by prismarine-web-client with blocks and player entities

The answer is a proxy layer that the package runs locally. Your browser connects to this proxy over WebSocket. The proxy then translates that WebSocket traffic into TCP and forwards everything to the Minecraft server you're targeting. From the server's perspective, it's just another client connecting normally. It has no idea you're doing this from a browser tab.

This architecture is clever because the client code mostly runs in your browser (the mineflayer logic, the 3D rendering), while the proxy handles the one thing browsers fundamentally can't do. It's a clean split. The proxy is lightweight and bundled with the npm package, so there's nothing extra to set up separately.

Worth noting: someone needs to run that proxy somewhere. The hosted demo has one running server-side. For self-hosting, it runs on your own machine.


Setting It Up Yourself

If you've Node.js installed, the whole setup takes about a minute. Install the package globally and start it:

Browser tab showing a 3D Minecraft world rendered by prismarine-web-client with blocks and player entities
Browser tab showing a 3D Minecraft world rendered by prismarine-web-client with blocks and player entities
code
npm install -g prismarine-web-client
prismarine-web-client

After that, open http://localhost:8080 in your browser. You'll see a connection screen asking for a server address and a username. Enter those and hit connect.

A few things to understand before you start. This starts the proxy server on your local machine. Anyone on that machine can use it via localhost, but it won't be reachable by others unless you expose the port. If you want to share it with friends on the same local network, you'd need to bind to your LAN IP and have them connect to your machine's address on port 8080. Doable, but requires basic network knowledge.

For development or if you want to dig into the code, clone the repo and run:

code
npm install
npm start

This fires up express and webpack in watch mode. Save a file, it rebuilds in a few seconds, and you refresh to see changes. The project also exposes a handful of useful globals on the window object for debugging, including bot, viewer, and worldView. If you pop open Chrome DevTools and type bot.chat('test') in the console, you can use in-game chat directly from there. That's a nice touch for anyone wanting to poke around at how things work.


What Works Right Now

Version 1.6.0 handles the core loop for exploration well. Look, blocks render correctly, movement works in real time, mobs and other players show up, and you can place and break blocks. For casual exploration or light building without the full Java client, it's genuinely functional.

Browser tab showing a 3D Minecraft world rendered by prismarine-web-client with blocks and player entities
Browser tab showing a 3D Minecraft world rendered by prismarine-web-client with blocks and player entities

What's not there yet: inventory management, chests and containers, sounds, and most combat interactions. The project's roadmap lists all of these as planned. So if you're picturing full survival gameplay with crafting, enchanting, and villager trading, version 1.6.0 isn't going to cover that.

That's not a knock. Rendering a Minecraft world in real time inside a browser tab, connected to a live server, is technically impressive on its own. The gap between "working exploration client" and "full Java client parity" is enormous, and what they've shipped is solid for what it sets out to do.

One practical use while you're already in browser mode: if you run across blocks you don't recognize, the block search tool on Minecraft.How is useful for quick lookups without needing to switch to another app.


Things That'll Trip You Up

Version compatibility is the biggest gotcha. prismarine-web-client works with specific Minecraft protocol versions through the mineflayer layer underneath. If the server you're connecting to runs a version that isn't supported, you'll get a connection error with no clear explanation. Check the project's GitHub for which versions the current release supports, because that list changes as the PrismarineJS team updates protocol support.

Browser tab showing a 3D Minecraft world rendered by prismarine-web-client with blocks and player entities
Browser tab showing a 3D Minecraft world rendered by prismarine-web-client with blocks and player entities

A few other common issues worth knowing about upfront:

  • Premium server authentication. Online-mode servers (the ones that verify your account against Mojang/Microsoft) are more complex to connect to through this setup. The demo and most self-hosted deployments work cleanest with offline-mode servers where you pick any username and connect directly.
  • Performance in busy areas. This is a real 3D renderer running in a browser tab. Dense terrain, large entity counts, and crowded servers will push your browser's CPU noticeably harder than open areas with few entities.
  • Desktop browsers only. Chrome and Firefox on desktop are the confirmed platforms. Mobile browser support isn't there, and given the control scheme complexity and rendering demands, it's not coming soon.
  • Keep the proxy running. If you're self-hosting and the process dies, the browser page can't connect to anything. If you use this regularly, setting it up as a persistent background service is worth the extra step.

One thing I had wrong before trying it: I assumed this only worked with tiny LAN or personal servers. It connects to any server the proxy can reach over TCP, including larger public ones, as long as the Minecraft version matches and auth isn't a blocker.


Worth Your Time Or Not

That depends entirely on what you need it for. As a "play Minecraft anywhere without installing the client" solution, it works within its current limits. Exploration and basic block interaction are genuinely usable. Full survival mode, not yet.

Browser tab showing a 3D Minecraft world rendered by prismarine-web-client with blocks and player entities
Browser tab showing a 3D Minecraft world rendered by prismarine-web-client with blocks and player entities

For server admins wanting a lightweight way to pop onto their server from a machine without the game installed, this is actually quite practical. No launcher, no account prompt on offline-mode servers, just open a browser and connect. Checking if a build looks right or if mobs are spawning correctly doesn't require the full client experience.

And while you're already in the browser, if you're looking for a skin to use on a server, the skin browser on Minecraft.How has a solid collection to explore.

The main alternatives worth knowing: Eaglercraft is the most recognized browser Minecraft project, though it has its own history and compatibility questions floating around it. For pure world viewing without playing, prismarine-viewer as a standalone library is worth knowing separately. And mineflayer, which this project builds on, is the go-to for scripting Minecraft bots rather than manual play.

For an MIT-licensed open-source project doing something this technically interesting, 539 stars feels like it's flying under the radar. If the use case fits, the five minutes to try it are well spent.

Frequently Asked Questions

Is prismarine-web-client free to use?
Yes, completely free. The project is released under the MIT license, which means you can use it, self-host it, modify it, and even integrate it into your own projects at no cost. The live demo on GitHub Pages is also free to access without any signup. There are no premium tiers or paywalls involved anywhere in the project.
Can I connect to any Minecraft server with prismarine-web-client?
You can connect to many servers, but not all. The server must run a Minecraft version that the underlying mineflayer library supports, and the protocol version has to match. Online-mode servers that require account verification through Mojang or Microsoft are harder to connect to. Offline-mode servers (where you pick any username) work most reliably. Check the GitHub repository for the current list of supported protocol versions.
Does prismarine-web-client work on mobile or tablet browsers?
No, not currently. The project officially supports Chrome and Firefox on desktop platforms only. Mobile browser support isn't on the near-term roadmap, largely because the control scheme (keyboard and mouse movement) and the rendering demands of the 3D world don't translate well to touchscreens. If you want browser-based Minecraft on mobile, this isn't the right tool for that.
What Minecraft versions does prismarine-web-client support?
Version support is determined by the mineflayer library that prismarine-web-client builds on. Not every Minecraft release is supported at any given time, and compatibility updates lag behind Mojang's release schedule. The safest approach is to check the GitHub repository directly, since the supported version list changes between releases and is more accurate than any third-party summary. If you connect to an unsupported version, you'll typically see a connection error.
Do I need to own a Minecraft account to use prismarine-web-client?
For offline-mode servers, no. You enter any username you like and connect directly without account verification. For online-mode servers (the paid servers that authenticate players against Mojang/Microsoft), the browser client setup doesn't handle premium auth in a straightforward way. The hosted demo and typical self-hosted setups are designed for offline-mode connections. If you specifically need to log into a premium server, expect complications.