My startup — cybersecurity intelligence & big data with the world's largest fraud database
← Back to Blog
5 min read
March 7, 2026

MLMap: Open Source Browser-Based Projection Mapping

I built a free, browser-based projection mapping application that runs entirely client-side. No server required, just vanilla JS, HTML, and CSS.

MLMap: Open Source Browser-Based Projection Mapping
Engineering

The Idea

Since always I loved projection mapping and it caught my attention. Since I have a projector, I was looking for some software that would allow me to do it, but all the options out there are paid and quite expensive.

I searched for open source alternatives, but they didn't work well, they were very confusing to use, and so on. That's why I decided to create an online program that allows doing things not too complex (at least for now) that allows managing a projector/monitor as a screen and being able to use with timeline to put videos, control them OBS-style, adjust formats to real object shapes, etc.

What is MLMap?

MLMap is a browser-based projection mapping application built with TypeScript. It runs entirely on the client with no server required, making it easy to deploy as a static site or run directly from local files.

MLMap Interface

Features

  • Layer system with shapes (square, circle, triangle), video, and iframe layers
  • Perspective transform using CSS matrix3d for precise corner-pin mapping
  • Multi-selection with Ctrl+Click and rubber band selection
  • Layer ordering via context menu (move up/down/top/bottom)
  • Clipping masks (Photoshop-style): shapes clip video layers, rendering video only through the mask geometry
  • Video sources: local files, URLs, screen/tab/window capture (getDisplayMedia), webcam (getUserMedia)
  • Transport controls: play, pause, stop, seek, next/previous, volume
  • Audio routing: choose where audio plays (Editor, Output, or Both)
  • Playlists with loop and ordering controls
  • Dual-window output: editor window for control + separate fullscreen display window for projection
  • Display sync via BroadcastChannel (layout, playback state, video data)
  • Multi-monitor support with screen selection
  • Workspaces with save/load, duplicate, rename, reset, and delete
  • Workflow import/export as .mlmap files or shareable URL
  • Undo/redo with full history
  • Snap to edges for precise alignment
  • Zoom with workspace scaling
  • Collapsible panels for a clean editing view

Getting Started

Requirements

  • Node.js (for building)
  • A modern browser (Chrome, Edge, Firefox)

Install & Build

Bash
npm install
npm run build        # Production build (minified)
npm run dev          # Development build
npm run dev:watch    # Development build with file watching

Run

Open index.html in your browser. No web server is required (file:// works).

To project on an external display, click Launch Output in the toolbar. The output window (display.html) opens separately and receives all layout and video data via BroadcastChannel.

Why This Project?

I've always been fascinated by projection mapping. Finding that all the professional tools were expensive and the free alternatives were either broken or too complicated, I knew there had to be a better way.

MLMap is my solution to this problem - a free, accessible tool that anyone with a projector can use to create stunning visual experiences.

Future Plans

The project is still in development, so there may be some bugs or errors. I'm constantly working on adding new features and improving the existing ones. Some things on the roadmap include:

  • More shape options
  • Advanced timeline controls
  • Audio reactive effects
  • Integration with more input sources
  • Mobile/tablet support for the editor

Try It Out

Live demo: https://fjrg2007.github.io/mlmap/

Source code: https://github.com/FJRG2007/mlmap

Give it a try and let me know what you think!

Author
Javier Romero González's avatar

Check my portfolio

Learn more about my work and projects!

Posts in:
Engineering
Version 2.4.7 — All rights reserved © Creative Commons Attribution - All Rights Reserves: CC BY-NC-ND 4.0 | TPEOficial LLC.