# Playground

Try TeXForm in the browser: compare profiles, read parse diagnostics, and inspect the tree without installing anything.

https://texform.dev/docs/playground

The playground at [play.texform.dev](https://play.texform.dev) runs the real TeXForm WebAssembly build in your browser. You type a formula, and the same parser, transform engine, and serializer you would get from `pip install texform` or `npm install texform` produce the output — nothing is simulated, and nothing is sent to a server.

It is the fastest way to answer the questions that come up before you write any code: what does this profile actually do to my formula, why did this formula fail to parse, and what does the tree look like underneath.

## What to try there [#what-to-try-there]

* **Compare profiles on your own formula.** Paste a formula and switch between `authoring`, `faithful`, `corpus`, and `equiv`. Profile choice is the one decision that changes normalization output the most, and watching all four results on input you care about is more convincing than any table. See [Transforms](https://texform.dev/docs/transforms) for what each profile targets.
* **Read parse diagnostics against the source.** Diagnostics are listed with the source span they point at, so a malformed formula shows you which fragment the parser could not read instead of a single opaque failure. The concepts behind the three parse outcomes are in [Parsing](https://texform.dev/docs/parsing), and the programmatic version is in [Handle parse errors](https://texform.dev/docs/handle-parse-errors).
* **Inspect the document tree.** The tree view shows the parsed nodes, their argument slots, and the argspec the parser used for each command — useful when a command binds its arguments differently from what you expected.
* **Check which packages are loaded.** The package list shows the knowledge packages in effect, which is the quickest way to see why `\ket` behaves the way it does with and without `braket`.
* **Try serialization options.** The serialization settings map to the same options you would pass to `to_latex` / `toLatex`, so you can preview a spacing or script-order choice before committing to it in code. See [Configure output style](https://texform.dev/docs/configure-output-style).
* **See the output rendered.** The playground renders the normalized result, which is a direct check on the point of the `corpus` profile: output that needs no extra packages to display.

## The version it runs [#the-version-it-runs]

> **The playground may lag behind the latest release**
>
> The playground is a separate application that depends on the published npm `texform` package, so it tracks published releases rather than unreleased work. When an output there disagrees with these docs, the installed package is the authority.

## What it does not do [#what-it-does-not-do]

There is no URL parameter for preloading a formula. Query strings are ignored, so a link to the playground always opens the default state; share the formula itself rather than a prefilled link. The playground also has no API and no persistence beyond your own browser, and it is not a substitute for the corpus workflows in [Normalize a corpus](https://texform.dev/docs/normalize-a-corpus) — a browser tab is the wrong place to push a million formulas through.

## Next steps [#next-steps]

- [Installation](https://texform.dev/docs/installation) — Install the package for Python, JavaScript, or Rust and verify it loads.

- [Quick start](https://texform.dev/docs/quick-start) — Reproduce the playground flow in code in about ten minutes.

- [Transforms](https://texform.dev/docs/transforms) — What each profile targets and which rules it selects.

