Skip to main content

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.

info

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.

See live example

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 notebook
  • Alt+., Cmd+.: Abort evaluation
  • Ctrl+P, Cmd+P: Open command palette
  • Shift+Enter: Evaluate current cell
  • Ctrl/Cmd+F: Search within the focused cell
  • Shift+Alt+Space: Overlay window (Desktop App only)

Cell Editing

  • Ctrl+W, Cmd+2: Hide/show input cell
  • Ctrl+/: Create fraction from selection
  • Ctrl+6: Superscript
  • Ctrl+2: Square root
  • Ctrl+-: Subscript
  • Alt/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.

note

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+/: Fraction
  • Ctrl+^: Power
  • Ctrl+-: Subscript
  • Ctrl+2: Square root
  • Ctrl+=: 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:

Partial support for Mathematica .nb format:

  • Limited text formatting support (see Decorations in Reference)
  • Different dynamics implementation
  • No DynamicModule, Slider, or Button — 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)
tip

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

tip

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:

info

Try dragging and panning with your mouse!

Powered by SVG and WebGL

Portability

Need to share your notes? You have several options:

  1. Export the entire notebook as a web page: Static HTML or Dynamic HTML
  2. Export individual figures: Figures
  3. 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