Overview
The entire notebook interface is built using plain JavaScript and HTML, powered by a Wolfram WebServer and WLX running locally on a Wolfram Kernel. This means you can work remotely by running the server anywhere you like (see how in the instruction guide).
Some computations are partially performed by your browser, and you can control this behavior if desired. All UI elements and cell operations are written in JavaScript and Wolfram Language, and handled by the WLJS Interpreter.
WLJS Interpreter is a tiny (3 kB) Wolfram Language interpreter that runs in the browser, written in vanilla JavaScript. It fully integrates the JavaScript environment with the Wolfram Language backend. We'll also refer to this as the frontend or client.
Unlike Mathematica, the cell design follows a mostly flat structure, similar to Jupyter Notebook. Only input
and output
cells are grouped together.
Output cells are editable. We do not explicitly separate them (as Mathematica or Jupyter do), because the whole document is a notebook — it doesn't distinguish between inputs and outputs. You can freely edit, copy, and reevaluate any output expression in place. So we distinguish them only formally.
Cell Control Buttons
All cells are grouped under a parent input cell. Other than that, the notebook structure is flat. Control buttons apply to the entire group:
From left to right:
- Add new cell below
- Hide input cell
- Evaluate (also via
Shift+Enter
) - More options
The last button expands into:
"Project to a window" is a particularly useful feature that lets you evaluate a cell in a new window. This is especially helpful when presenting slides.
Shortcuts
Works in both browser and desktop app versions
UI Shortcuts
Ctrl+S
,Cmd+S
: Save notebookAlt+.
,Cmd+.
: Abort evaluationCtrl+P
,Cmd+P
: Open command paletteShift+Enter
: Evaluate current cellCtrl/Cmd+F
: Search within the focused cellShift+Alt+Space
: Overlay window (Desktop App only)
Cell Editing
Ctrl+W
,Cmd+2
: Hide/show input cellCtrl+/
: Create fraction from selectionCtrl+6
: SuperscriptCtrl+2
: Square rootCtrl+-
: SubscriptAlt/Cmd+/
: Comment a line
See more keybindings in the Input Cell reference.
Wolfram Language
When you start typing, the editor assumes you're using the Wolfram Language. Press Shift+Enter
(or click the play button) to evaluate.
Output cells are joined to the input. You can hide the output by clicking the arrow →
to the left of the cell.
Once you modify the output cell, it becomes a new input cell—just like in Mathematica.
Syntax sugar for fractions and 2D input is fully supported.
Useful shortcuts include:
Ctrl+/
: FractionCtrl+^
: PowerCtrl+-
: SubscriptCtrl+2
: Square rootCtrl+=
: Semantic interpretation
Or use the special toolbar (snippet palette):
What Differs from Mathematica 💡
If you're familiar with the Wolfram Language, you'll feel at home using WLJS Notebook. Notable differences:
- Output cells are editable
- Full support for syntax sugar (fractions, powers, etc.)
- Support for Graphics, Graphics3D, Sound, Video, and more
- Most plotting functions are supported (see Reference)
- Compatible with standard Wolfram Packages and Paclets
- Support for resource functions and neural networks
- Formatting options (limited)
Partial support for Mathematica .nb
format:
- Limited text formatting support (see Decorations in Reference)
- Different dynamics implementation
- No
DynamicModule
,Slider
, orButton
— use InputRange, InputButton - Flat notebook structure
- Markdown is the main language for text cells (Markdown)
- No extended evaluation history (only the last output)
- Not all graphics primitives are implemented (gradually improving)
If something does not look like as it should, try MMAView
Why Not Jupyter Ecosystem?
We chose to build our own system because:
- A Jupyter kernel for Wolfram Engine already exists
- We wanted syntax sugar, editable output cells, multimedia cells — which require a custom cell editor
- Jupyter uses
ZMQ
, which doesn't meet our needs for fast, low-latency communication with large payloads - Adding a third language or API would increase long-term maintenance
Command Palette
Learn more: Command Palette
Use Cmd+P
/ Ctrl+P
to access useful tools like matrix builders, color pickers, and more.
Snippets are just special notebooks with built-in UI elements.
Editor of Power
A single input cell can output:
- Wolfram Language results
- An HTML page
- A JavaScript window
- A slide in a presentation
You can even draw inside the code editor:
Overlay Mode
If the WLJS App is running (tray or regular), press Shift+Alt+Space
for quick input access.
More: Overlay Mode
Graphics 2D & 3D
Most Mathematica plotting functions produce low-level primitives. Most of them are supported here:
Try dragging and panning with your mouse!
Powered by SVG and WebGL
Portability
Need to share your notes? You have several options:
- Export the entire notebook as a web page: Static HTML or Dynamic HTML
- Export individual figures: Figures
- Make a presentation: Static Slides
No internet dependency — it works offline and will remain functional even after future updates. You can always re-import the exported notebook. Ideal for sharing notes or publishing on a blog.
Other Languages
Need annotations? No need to switch cell types. Just type .md
on the first line of a cell to enable Markdown.
Click the arrow on the right to hide the source — only the output will be shown. The editor is flexible enough to support custom output cells too.
You can also mix WL and JavaScript to create stunning visualizations:
Built-in support for:
Debugger
Access via the command palette.
More: Debugger
AI Copilot
Try it out: AI Assistant