A cross-platform editor for Visual Pinball X (.vpx) table files.
Try it in your browser - No installation required!
VPX Editor is a cross-platform table editor for Visual Pinball, available as both a desktop application (Electron) and a web app. Built with TypeScript and Three.js, it uses vpin-wasm to extract and assemble VPX files.
This project was initially created with the assistance of Claude AI.
Warning
Always make a backup of your VPX files before editing! This editor is in early development and is bound to have bugs.
Note
This editor converts tables to use Part Groups instead of Layers, a new feature introduced in VPX 10.8.1. Tables saved with this editor require VPinball 10.8.1 or later to run.
Port of the Windows VPX 2D editor:
- All playfield elements (walls, ramps, flippers, bumpers, lights, etc.)
- Drag-and-drop object placement
- Multi-select and transform operations
- Sound Manager
- Image Manager
- Material Manager
- Dimension Manager
- Collection Manager
- Render Probe Manager
- Monaco-based VBScript editor
- Syntax highlighting
- Function creation
- Real-time 3D rendering with Three.js
- Blender-style controls
- Material and texture preview
- Wireframe mode
- Play Mode preview (Desktop, FSS, Cabinet, Mixed Reality, VR)
- Configure VPinball executable path in settings
- Launch and test tables directly from the editor
- Light and dark mode
- System theme detection
Blender-style navigation:
| Input | Action |
|---|---|
| Middle-drag | Orbit camera |
| Shift + Middle-drag | Pan camera |
| Scroll wheel | Zoom |
| Numpad 1 | Front view |
| Numpad 3 | Side view |
| Numpad 7 | Top view |
| Ctrl + Numpad | Opposite views |
| Alt (hold) | Temporary orbit mode |
Download the latest release for your platform from the Releases page.
- VPinball 10.8.1+ - Required only for playing tables from the editor
- Node.js 20+
Install the node dependencies:
npm installnpm startLaunches the desktop app in development mode with hot reload.
npm run dev:webLaunches the web version in development mode with hot reload.
npm run makeCreates distributable packages for the current platform:
| Platform | Format | Architecture |
|---|---|---|
| macOS | DMG, ZIP | arm64 |
| Linux | DEB, RPM, Flatpak, ZIP | x64 |
| Windows | Squirrel Installer, ZIP | x64 |
If you have issues building the flatpak try this first:
flatpak --user remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepoTo get more output during the flatpak build:
DEBUG=electron-installer-flatpak,@malept/flatpak-bundler npm run makenpm run build:webCreates a production web build in dist-web/.
npm run typechecknpm run formatsrc/
├── desktop/ # Electron main process
├── web/ # Web entry point
├── platform/
│ ├── desktop/ # Desktop platform abstraction
│ └── web/ # Web platform abstraction
├── preload/ # Electron preload scripts
├── editor/ # Shared editor renderer
│ ├── components/
│ ├── meshes/
│ ├── parts/
│ └── undo/
├── features/ # Feature modules (managers, dialogs)
├── shared/ # Shared utilities
└── types/ # TypeScript definitions
This project is licensed under the GNU General Public License v3.0 or later - see the LICENSE file for details.
This matches the license used by Visual Pinball.





