COLMAP Moves Into the Browser

Rafael Spring ports COLMAP’s sparse reconstruction workflow into a local browser app, with WebGPU acceleration and standard COLMAP output.
A browser-based COLMAP point-cloud view shows a dense golden 3D reconstruction centered on a pale canvas, surrounded by blue camera frustums and sparse floating points. A small control panel in the upper left labels Camera 1 and displays OpenCV calibration values, giving the interface a technical, workspace feel.

For those who don’t know the tool: COLMAP is an open-source Structure-from-Motion and Multi-View Stereo system used to derive camera poses and 3D reconstruction data from overlapping photographs. Rafael Spring’s browser workspace moves a substantial part of that workflow into a local (!) web application: footage enters as images or video, feature extraction and matching lead into sparse reconstruction, and standard COLMAP data can leave again for downstream photogrammetry, reconstruction and Gaussian Splatting pipelines.

Installing COLMAP is not especially frightening, but Rafael Spring has removed even that requirement. His unofficial browser port runs a substantial COLMAP reconstruction workflow locally inside a web browser and exports standard COLMAP data for downstream use. The important word is local. Images, video and reconstruction data stay on the user’s machine rather than being uploaded for processing. The application and optional processing models still arrive through the browser, and temporary working data may use browser storage, but user footage is not sent to its servers. For productions handling unreleased plates, location photography or scans that should not leave the workstation, that makes the browser format more than a convenience. Or when you are scanning at the back end of nowhere and don’t have a data connection, it is nice to know your photogrammetry efforts won’t be wasted before you make your trek back to civilisation.

A dark navy upload panel shows a stylized folder icon on the left and the prompt “Drop images, a video or a folder here” in bold white text. Smaller copy below lists supported file formats, while two rounded buttons on the right invite users to choose images or a folder, creating a clean, browser-based import interface.

COLMAP without the installation ceremony

The workspace accepts JPEG, PNG and WebP images, plus browser-supported video including MP4/H.264, WebM with VP8, VP9 or AV1, and Ogg/Theora where the browser can decode it. Video can be reviewed, sections retained or removed and frames extracted at an adjustable interval before reconstruction.

Step 01, Pre-process, can also prepare depth maps and masks, including optional MoGe2 depth models in ViT-S, ViT-B or ViT-L variants, and includes controls for filtering discontinuous depth. Vocabulary trees can be supplied locally or downloaded in 32K and 256K variants. The interface exposes a 360-footage option, although support for equirectangular and uncalibrated fisheye footage is still marked as coming soon.

Step 02, Features, exposes CPU SIFT controls mapped to native COLMAP settings: maximum image size, parallel image workers, EXIF intrinsics, masks, maximum keypoint count, octave and scale-space controls, peak and edge thresholds, histogram equalisation, affine-shape estimation, orientation handling and domain-size pooling.

Automatic worker selection reserves two reported logical cores and caps the worker count at eight. Experimental WebGPU SIFT feature and descriptor extraction is available but disabled by default, with Fast and Detailed presets for those who prefer not to begin the day by negotiating every SIFT parameter personally.

A horizontal row of four rounded tiles shows COLMAP features: Keypoints with a dense point-cloud preview, Matches with a cluttered indoor scene, Entire datasets with a tall dataset graphic, and Masks with a black-and-white silhouette. Cool gray tones and small icons create a clean interface.

Step 03, Matching + two-view, generates image pairs and performs feature matching plus geometric verification. The interface exposes parallel pair workers, bucket size, epipolar-error limits, SIFT ratio and distance thresholds and cross-checking; the site’s guidance recommends exhaustive matching for smaller unordered sets, sequential matching for ordered footage and vocabulary-tree matching when collections get large.

Step 04, Sparse mapping, runs Structure-from-Motion on the verified matches to recover camera poses and a sparse 3D point cloud. Results can be inspected in a live 3D view with image strips, camera frusta, SIFT overlays and the view graph; the interface also exposes crop tools, M-estimator tuning and additional alignment iterations. Partial results can be exported during processing and imported again later, while the completed reconstruction can leave as standard COLMAP data.

Step 05, Dense mapping, is the current boundary: the page already exposes the stage and its settings area, but densification and depth-map estimation are not yet connected to the backend. In other words, the browser can travel a long way through COLMAP, but dense reconstruction is presently where it finds the roadworks.

Spring’s own tips are refreshingly less glamorous than the WebGPU plumbing, and probably more important to the final reconstruction. Capture enough overlap and parallax that each part of the subject appears in at least three images, and move around the object instead of simply rotating the camera from one position.

Keep frames sharp and consistent, use a sufficiently fast shutter, keep ISO sensible and lock focus, exposure and white balance where possible. Shoot methodically from several heights and angles, avoid moving subjects and major scene changes, and give SIFT actual texture to work with; removable markers can help on blank or repetitive surfaces. Keep lens, focal length, resolution and zoom stable, and share camera intrinsics only between genuinely identical camera setups. With video, extract enough frames to retain viewpoint change but skip near-duplicates, keep filenames chronological and use sequential matching.

Start with the default feature settings and inspect keypoint coverage and verified matches before turning every dial clockwise; affine shape and domain-size pooling can help difficult scale or viewpoint changes, while histogram equalisation can help awkward exposure, all at additional processing cost.

That interoperability is the practical hook. COLMAP-compatible camera poses, images and sparse 3D points can continue into downstream reconstruction tools and Gaussian Splatting workflows without introducing another proprietary hand-off.

A dark slate infographic titled "Extract video frames" shows a camera icon at the top linked by white arrows to four tilted thumbnail frames of cyclists on a wooden path. Below, a "Crop points" panel uses colored polygon outlines and a small scissors icon to illustrate camera positions.

WebAssembly, WebGPU and local limits

The project lists WebAssembly, Emscripten, LLVM runtimes and Dawn WebGPU bindings among its browser-side components. If we had invented one of those names, would you know which one? CPU SIFT controls map to native COLMAP settings, while experimental WebGPU paths are available for SIFT feature and descriptor extraction. GPU extraction is currently disabled by default.

This is therefore genuine client-side processing rather than a remote service disguised as a web UI. The trade-off is equally local: dataset size and speed depend on browser limits, system memory, CPU, GPU and available storage. The developer warns that very large datasets may become slow or exceed available resources. Browsers have become ambitious, but they still cannot conjure RAM from enthusiasm.

Native-class performance, with an asterisk

Spring describes the implementation as reaching native-class performance and has published comparative timings against stock COLMAP. On an AMD Ryzen 7 5800X system with 32 GB of RAM and an RTX 3070-class GPU, his SIFT test used 229 images at 5616 × 3744 pixels, reduced to a maximum image size of 2400 pixels with up to 8192 features.

Dark-themed analytics dashboard comparing SIFT keypoints and sparse mapping performance in the browser and with COLMAP. Two rounded panels show horizontal bars in teal, purple, and orange, with elapsed times, input statistics, and hardware details set against a muted blue-gray interface.

The result is 54 seconds for browser GPU SIFT extraction versus 1 minute 41 seconds for stock COLMAP GPU processing. CPU extraction is listed at 1 minute 25 seconds in-browser versus 1 minute 46 seconds for stock COLMAP, while sparse mapping is reported at 1 minute 37 seconds versus 1 minute 47 seconds. These are developer benchmarks, not independent measurements. They support the native-class claim on that test system, but they should not be generalized across browsers, hardware or datasets without equivalent testing. Photogrammetry already has enough variables before the browser joins the meeting.

Where it fits

Sparse COLMAP data remains useful well beyond the sparse cloud itself. Structure-from-Motion estimates camera intrinsics, camera poses and 3D structure from overlapping images, and those results can feed later reconstruction or Gaussian Splatting stages.

Spring specifically positions the browser output for downstream workflows including Gaussian Splatting. The application also exposes a 3DGS stage in its navigation, but it should not be described as a complete Gaussian Splatting production suite. Its stronger role is earlier in the chain: derive camera and sparse reconstruction data locally, then pass standard COLMAP output into the next tool. For VFX, reality capture and virtual-production work, that can remove one installation barrier without creating a new interchange problem.

Free, but not automation-free

The upstream COLMAP project is open source under the BSD 3-Clause licence. Spring’s browser service incorporates COLMAP and other open-source components, but the site’s own first-party software has separate usage terms.

Individual human use through the supplied interface is permitted. Headless, scripted, robotic or automated use requires a separate written licence, and users needing headless reconstruction are directed toward upstream COLMAP. That makes the browser version an interactive production utility rather than a drop-in replacement for an automated COLMAP farm or scripted asset pipeline.

Spring says the project is separate from DotProduct and Dot3D, despite his role as CTO and co-founder of DotProduct and his background in 3D computer vision. The resulting proposition is refreshingly simple: feed images or video into a browser, perform much of COLMAP’s sparse-reconstruction workflow locally, inspect the result and take standard COLMAP data downstream.

Sometimes progress is not another AI button. Sometimes it is removing an installer and leaving the file format alone. Studios should test the browser implementation on representative capture sets, target browsers and production hardware, and verify exported COLMAP data in intended downstream applications before adopting it for active work.

http://offlinetools.io/colmap

ProductCOLMAP browser workspace
DeveloperRafael Spring
ProcessingLocal browser processing; input footage and reconstruction data are not uploaded for processing
Core workflowPre-processing, SIFT extraction, matching and two-view verification, sparse Structure-from-Motion and COLMAP export
ImagesJPEG, PNG, WebP
VideoMP4/H.264, WebM with VP8/VP9/AV1, Ogg/Theora where browser-supported
Pre-processingVideo frame extraction, masks, depth preparation, MoGe2 depth models
Feature extractionNative-mapped CPU SIFT controls; experimental WebGPU SIFT feature and descriptor extraction
MatchingExhaustive, sequential and vocabulary-tree workflows; geometric two-view verification
Sparse mappingCamera reconstruction and sparse 3D point cloud with live inspection and COLMAP export
Dense mappingStage and controls present; densification and depth-map estimation not yet connected to the backend
OutputStandard COLMAP reconstruction data; partial results can also be exported and re-imported
AutomationHuman use through supplied UI; automated or headless use requires separate licensing
Upstream projectCOLMAP, BSD 3-Clause
Browser guidanceChromium-based browsers or Firefox recommended