WLJS LogoWLJS Notebook

Help & FAQ

Find quick answers to common questions about installing, running, using, sharing, and troubleshooting WLJS Notebook.

This page collects short answers to questions that repeatedly appear in the support chat and GitHub Discussions. Follow the links in each answer for the complete documentation.

Where should I ask?

Use this page for known solutions, GitHub Discussions for questions and workarounds, and GitHub Issues for reproducible bugs. For real-time help, join the Telegram support group.

Installation and startup

Which Wolfram Engine version should I use?

Wolfram Engine versions 14.1–15.0 are well tested with WLJS Notebook. Install and activate Wolfram Engine before installing WLJS Notebook. See the installation guide for platform-specific instructions.

Why does the launcher show exit code -1?

Close WLJS Notebook, open a terminal, and activate Wolfram Engine:

wolframscript -activate

Then start WLJS Notebook again. If activation succeeds but WLJS still cannot start, collect a debug log as described in How do I collect logs?.

Why do I see a license error, kernel timeout, or kernel initialization timeout?

The launcher can display a license error for several startup failures, not only an invalid license. First:

  1. Close other wolframscript, Wolfram Kernel, Mathematica, and WLJS processes.
  2. Run wolframscript in a terminal and confirm that it starts normally.
  3. Check your Wolfram products and confirm that a Wolfram Engine key is available.
  4. Update WLJS Notebook to the latest release and try again.

WLJS normally uses two kernel processes, which is the maximum permitted by the free Wolfram Engine license. If the problem remains, include your Wolfram version, operating system, and the early debug-log messages in a support request. See the related license-error discussion.

Can I install WLJS Notebook on another drive?

The desktop application's installation location is controlled by the platform installer. If you need full control over the location, you can run WLJS from source from another drive. A source installation does not provide every desktop integration, such as file associations and some native dialogs.

Do I need internet or a permanent connection for WLJS?

No. WLJS itself works offline. Wolfram Engine may require internet access for initial activation, periodic license validation, or account-related operations. See installation and connectivity.

How do I use WLJS with SSH?

SSH, SSH port forwarding.

Run WLJS on the remote machine, then forward its HTTP and WebSocket ports through SSH. WLJS uses ports 20560, 20559, and 20563; the SSH tunneling guide includes a complete command.

Can I use WLJS in a browser or run it as a server?

browser usage, WLJS server.

Yes. Run the Docker image or start WLJS from source, then connect to its web interface in a browser. See running WLJS on a server for deployment, port-forwarding, and desktop-only feature limitations.

Can I use FEM (Finite Element Method or Package)?

fem.

Sure! This documentation is not included here, please, refer to official FEM package page

How do I update WLJS Notebook software?

The desktop application updates automatically on Windows and macOS. On GNU/Linux, download and install the current package from the release page.

Notebooks and evaluation

How do I evaluate the entire notebook?

Use the Evaluate all action from the notebook menu. Alt-I or ⌘-I evaluates only cells marked as initialization cells; it is not an evaluate-all shortcut.

To make a cell run when the notebook starts, open the cell-group menu and choose Make initialization cell. See cell group properties.

Can WLJS open Mathematica .nb files, including on Linux?

start .nb in Linux.

Yes. Open a .nb file with WLJS Notebook and it will be converted to the plain-text .wln format. Import is still experimental: complex text formatting, DynamicModule, some graphics styling, and embedded media may not convert exactly. See Mathematica notebook import and export.

Wolfram Language package files such as .wl and .m can be loaded with Get as usual.

Can I edit a notebook with VS Code, Codex, or another coding assistant?

Yes. The .wln format is designed to be readable by people, version control, and LLM tools. Changes made by an external editor are automatically hot-reloaded. WLJS also provides an MCP server and command-line tools for inspecting, editing, and evaluating notebook cells.

How do I use or connect an AI agent, Codex, or another LLM to WLJS?

AI agent, vibecoding, Codex, ollama, llama, LLM support.

WLJS Desktop provides an MCP server. Connect your agent by following the MCP server guide; it can inspect notebooks, cells, and symbols, edit cell lines, and evaluate code in the kernel. In the agent prompt, explicitly say use wljs mcp tools.

Why do symbol docs seem incomplete or differ from Wolfram documentation?

WLJS documentation describes the WLJS implementation; it is written for this project rather than copied from Wolfram Research documentation. Some symbols behave differently in the WLJS frontend, while other kernel-level symbols may work without a dedicated WLJS page. Consult the migration guide and the official Wolfram Language documentation for missing reference material.

Does WLJS use Mathematica (MMA) or Wolfram Engine?

MMA vs WLJS.

WLJS uses a Wolfram Kernel. It works with Wolfram Engine, which is also distributed separately as a free developer product, or with a kernel installed by Mathematica. Evaluate $Version to check the kernel version in use. See installation.

What is a .wln file?

.wln is WLJS Notebook’s native plain-text notebook format. It is readable in a text editor, works well with version control, and can be edited by coding assistants. See notebook files in the migration guide.

Can I import a Jupyter .ipynb notebook?

No. Jupyter notebook import is not currently supported. If it is important to your workflow, please open a feature request.

How do I run Python from WLJS?

Yes. Use Wolfram Language ExternalEvaluate to run Python and return its result, for example ExternalEvaluate["Python", "1 + 1"]. See using Python from notebook code.

Is Wolfram|Alpha available for natural-language input?

Wolfram Alpha, natural language input.

Use SemanticInterpretation["..."], or select text and press Ctrl-= to use semantic input. See SemanticInterpretation for examples.

How do I access evaluation history or an earlier result?

evaluation history, previous result.

WLJS keeps the previous output. Use % or Out[] to retrieve the latest result; it does not keep a full numbered output history.

How does autocomplete work for my symbols and package definitions?

Built-in symbols appear first, and symbols you define are added to completion. To rescan definitions after Get or Needs, enable Rescan on Get or Needs in the editor settings. It is disabled by default to reduce startup time.

How can I use EvaluationMonitor or monitor a long-running evaluation?

evaluationmonitor.

Wrap the evaluation with Monitor[expr, status] to show a temporary, continuously updated monitor cell. You can also use the debugger from the top menu or command palette. See Monitor.

Can I draw a matrix in a Markdown cell?

Yes. Use a LaTeX block in a Markdown cell. For example, this renders a column vector as a matrix:

.md

$$
\\vec{v} = \\begin{bmatrix} X \\\\ Y \\end{bmatrix}
$$

In Markdown cells, escape LaTeX backslashes as shown. See LaTeX in Markdown cells for inline equations, block equations, and other supported syntax.

How do I write text in a notebook?

Start an input cell with .md, then write Markdown on the following lines. You can hide the input through the cell-group menu or the arrow beside the output cell. See Markdown cells.

How can I generate an HTML table from data?

Use a WLX or HTML cell and generate the table rows and cells with Table. For example, after evaluating data = Table[RandomWord[], {4}, {4}];, this WLX cell creates a table from data:

.wlx

With[{TableBody = Table[
  With[{Row = Table[
    <td class="px-3 py-2"><Item/></td>,
    {Item, Rows}
  ]},
    <tr class="bg-white border-b"><Row/></tr>
  ],
  {Rows, data}
]},
  <table class="table-auto"><TableBody/></table>
]

For raw HTML, use the same nested Table expressions through WSP templates. See generating tables in WLX or HTML cells and WSP.

Is there a command palette?

palette, command palette.

Yes. Press Ctrl-P on Windows or Linux, or ⌘-P on macOS. You can also click the title bar that displays the notebook name or path. See Notebook Tools for the available commands.

Can I start and use WLJS from the terminal?

Yes. The WLJS Desktop application includes the wljs CLI, which can open notebooks and folders, evaluate code, inspect and edit notebooks, and access documentation. For example, run wljs . to open the current folder. See the CLI reference.

To run WLJS as a headless server, use Docker or clone the repository and follow the server setup guide.

Where can I find all keyboard shortcuts and hotkeys?

See Math typesetting and shortcuts for editing, evaluation, notebook, command-palette, and special-character shortcuts.

Graphics and formatting

Why does a plot look different from Mathematica?

WLJS uses its own web-based renderer, so some Mathematica styling options do not have an exact frontend equivalent. When you need Wolfram Engine's native appearance, wrap the expression with MMAView:

Plot[Sin[x], {x, 0, 2 Pi}] // MMAView

MMAView rasterizes the expression using a parallel kernel. It is a useful compatibility fallback, but the result is an image rather than a native WLJS graphic.

How do I save a plot or graphic?

For interactive plots - use export feature Standalone HTML file or MDX, embdeded HTML if you want to use it on your blog page. For programmatic export, use Export:

Vector Graphics

Export["plot.pdf", Plot[Sin[x], {x, 0, 2 Pi}]]

Raster graphics

Export["plot.png", Plot[Sin[x], {x, 0, 2 Pi}] // Rasterize]

For complete notebooks, printable documents, or slides, see the PDF export guide.

How can I use Mathematica-style rendering for an unsupported expression?

Apply MMAView to that expression. Please still report rendering incompatibilities: a small example can help improve WLJS support for many related expressions.

Why is part of a TeXView label cropped?

The browser may estimate the LaTeX container too early or make it too small. Give the container an explicit width and height:

TeXView["x^2 - 1", ImageSize -> {100, 50}]

in the full context:

Plot[x^2-1, {x,0,10}, Epilog->{
  Inset[TeXView["x^2 - 1", ImageSize -> {100, 50}], {5,60}]
}]

If the label also needs to be positioned within that box, use AlignmentPoint, for example AlignmentPoint -> {Left, Top}. See TeXView for the available values.

Can I resize an output cell?

resize output cell.

Output cells do not have a manual resize handle. Wrap a large expression in Pane to give it a fixed viewport with scrolling, for example:

Pane[1000!, ImageSize -> 300]

See Pane for size options.

How do I disable figure zooming and panning?

disable figure zoom in and out.

For a Graphics expression, set "Controls" -> False. For plotting functions that return Graphics, insert the option into the generated expression:

Insert[Plot[x, {x, 0, 1}], "Controls" -> False, {2, -1}]

See Graphics for interactive graphic controls.

How do I add custom ticks or tick labels to Plot and Graphics?

Use Ticks for ordinary axes. Provide one list for each axis; each list can contain tick positions:

Plot[Cos[x], {x, 0, 2 Pi},
  Ticks -> {{0, Pi, 2 Pi}, Automatic}
]

To display custom text, use {position, label} pairs. The label must be a string:

Plot[Cos[x], {x, 0, 2 Pi},
  Ticks -> {{{0, "0"}, {Pi, "\[Pi]"}, {2 Pi, "2\[Pi]"}}, Automatic}
]

When the plot or graphic uses Frame -> True, use FrameTicks instead of Ticks. The same forms work with both Plot and Graphics. See the Plot tick options and Graphics tick options.

How do I change the notebook font?

Add custom CSS through Settings → Custom CSS. The application styles guide documents selectors for the UI, code editor, and Markdown cells, including font-family examples.

How do I change the notebook font size or zoom level?

Use Ctrl-+/Ctrl-- on Windows or Linux, or ⌘-+/⌘-- on macOS. The top-bar Zoom in and Zoom out actions provide the same global UI scaling.

How do I switch between light and dark mode?

Open Settings and choose the light/dark mode setting. See Settings.

How do I enter Greek variables or other special characters?

Press Esc, type the first letter, and choose a symbol from the completion menu. Alternatively, open the command palette with Ctrl-P or ⌘-P and select Special characters. See keyboard shortcuts.

Is there LaTeX support?

Yes. Use LaTeX equations in a Markdown cell, use TeXView inside Wolfram Language output, or start a dedicated LaTeX cell with .latex. See LaTeX cells.

Why are labels, legends, or insets missing after Rasterize or PDF export?

Labels, legends, insets, and other frontend elements may render asynchronously. If Rasterize or PDF Export captures the expression before every element is ready, increase the capture delay with "ExposureTime":

Export["figure.pdf", expression, "ExposureTime" -> 6]

Rasterize[expression, "ExposureTime" -> 6]

The value is a delay in seconds. Use the shortest delay that consistently captures the complete expression.

Rasterize and PDF Export require the WLJS Notebook Desktop application. They are not available in server mode.

See exporting frontend-rendered output and Rasterize.

How do I render and export a path-traced 3D image?

Select the path-tracing renderer and give it enough time to accumulate samples before it stops. For a two-minute render, set "SleepAfter" in milliseconds and match it with an "ExposureTime" in seconds:

scene = Graphics3D[{Gray, Cuboid[], Red, Sphere[{0, 0, 2}]},
  "Renderer" -> "PathTracing",
  "SleepAfter" -> 2 60 1000
];

image = Rasterize[scene, "ExposureTime" -> 2 60]

To capture a composition as PDF instead, use the same exposure time:

Export["image.pdf", scene, "ExposureTime" -> 2 60]

WLJS stops continuous rendering after a short interval by default to reduce GPU load. "SleepAfter" controls that interval, while "ExposureTime" controls when Rasterize or PDF Export captures the result.

Rasterize and PDF Export require the WLJS Notebook Desktop application. They are not available in server mode.

See Graphics3D path tracing, Rasterize, and PDF Export.

Sound and audio

How do I play a beep, blop, custom sound, or WAV file without creating output in the cell?

Use Beep[] for a notification sound, or Beep["Hey"] to play it and display a message. To play a Sound or Audio object without producing an output widget, use EmitSound:

Button["Beep", EmitSound[Sound[SoundNote["C4"]]]]

EmitSound[Audio["sound.wav"]]

Generated audio works the same way:

sfx = Audio[
  Table[Sin[Sqrt[10000.0 t]], {t, 0, 4 Pi, 0.001}],
  "Real32"
];

Button["Piu", EmitSound[sfx]]

Button actions inherit the current window. A timer does not, so capture the window before starting it and pass it explicitly:

win = CurrentWindow[];
SetTimeout[
  EmitSound[Sound[SoundNote["C4"]], "Window" -> win],
  Quantity[2, "Seconds"]
];

For live raw-audio buffers, use Audio[buffer // Offload, "Real32"]. See Beep, EmitSound, and audio streaming.

Sharing and interactive exports

Why is my Manipulate static in an exported HTML file?

A static HTML file has no Wolfram Kernel, so kernel-dependent controls preserve only their last captured state. Choose the Interactive HTML export when the interaction can be sampled and replayed in the browser. The exporter records input/output states and can interpolate missing values; it does not ship a live kernel inside the file.

Read HTML File for automatic and manual sampling, limitations, and examples.

Can someone view an exported notebook without installing WLJS?

Yes. A standalone HTML notebook opens in a normal browser and can include plots, media, stored state, and supported interactive elements. No WLJS installation is required for the reader.

How can I export or share a notebook?

Use the Share or Print actions in the top menu, or choose the corresponding command-palette action. WLJS supports standalone HTML and Markdown-based exports, and can export or import Mathematica .nb files.

Does WLJS support collaboration or a multi-user environment?

collaboration, multi-user environment.

WLJS can run on a server, where multiple users can open and evaluate notebooks in a browser with a shared kernel. Two connections cannot edit the same notebook at once: opening it for another user disconnects the existing connection. This is not a simultaneous-editing or real-time collaboration feature. See running WLJS on a server.

Cache and diagnostics

Why do I still see old content after an update?

This is most common when WLJS runs in a browser or Docker. Try, in order:

  • Ctrl-F5 or ⌘-R
  • Force Reload from the desktop application's menu
  • Reload Window
  • Clear Cache and Reload

How do I collect logs?

In the desktop application, open Misc – Show Logs. If the master kernel crashes, WLJS generates a crash log that is available there.

To capture a reproducible startup or connection problem with debug logging:

  1. Restart WLJS Notebook and select DEBUG in the launcher.
  2. Reproduce the problem.
  3. Close the application normally.
  4. A window containing the collected log file will appear.
  5. Review the log for private data, then attach it to a GitHub Issue or send it through the support group.

What should I include when reporting a problem?

Include:

  • a minimal expression or notebook that reproduces the problem;
  • what you expected and what happened instead;
  • your operating system and whether you use the desktop app, Docker, or server mode;
  • the output of $Version and $SystemID;
  • screenshots or a short screen recording when the issue is visual;
  • a debug log for startup or kernel-connection failures.

Before opening an issue, search this documentation and GitHub Discussions. If you are not sure whether something is a bug, start a Discussion.

Ask the community

The command palette can create a GitHub Discussion containing a focused group of notebook cells:

On this page

Installation and startupWhich Wolfram Engine version should I use?Why does the launcher show exit code -1?Why do I see a license error, kernel timeout, or kernel initialization timeout?Can I install WLJS Notebook on another drive?Do I need internet or a permanent connection for WLJS?How do I use WLJS with SSH?Can I use WLJS in a browser or run it as a server?Can I use FEM (Finite Element Method or Package)?How do I update WLJS Notebook software?Notebooks and evaluationHow do I evaluate the entire notebook?Can WLJS open Mathematica .nb files, including on Linux?Can I edit a notebook with VS Code, Codex, or another coding assistant?How do I use or connect an AI agent, Codex, or another LLM to WLJS?Why do symbol docs seem incomplete or differ from Wolfram documentation?Does WLJS use Mathematica (MMA) or Wolfram Engine?What is a .wln file?Can I import a Jupyter .ipynb notebook?How do I run Python from WLJS?Is Wolfram|Alpha available for natural-language input?How do I access evaluation history or an earlier result?How does autocomplete work for my symbols and package definitions?How can I use EvaluationMonitor or monitor a long-running evaluation?Can I draw a matrix in a Markdown cell?How do I write text in a notebook?How can I generate an HTML table from data?Is there a command palette?Can I start and use WLJS from the terminal?Where can I find all keyboard shortcuts and hotkeys?Graphics and formattingWhy does a plot look different from Mathematica?How do I save a plot or graphic?How can I use Mathematica-style rendering for an unsupported expression?Why is part of a TeXView label cropped?Can I resize an output cell?How do I disable figure zooming and panning?How do I add custom ticks or tick labels to Plot and Graphics?How do I change the notebook font?How do I change the notebook font size or zoom level?How do I switch between light and dark mode?How do I enter Greek variables or other special characters?Is there LaTeX support?Why are labels, legends, or insets missing after Rasterize or PDF export?How do I render and export a path-traced 3D image?Sound and audioHow do I play a beep, blop, custom sound, or WAV file without creating output in the cell?Sharing and interactive exportsWhy is my Manipulate static in an exported HTML file?Can someone view an exported notebook without installing WLJS?How can I export or share a notebook?Does WLJS support collaboration or a multi-user environment?Cache and diagnosticsWhy do I still see old content after an update?How do I collect logs?What should I include when reporting a problem?Ask the community