Simple block
The default variant: highlighted code, nothing else. Indentation inside the element is removed.
Every example is a window: the live result on top, the exact markup that renders it underneath. Copy the markup, change one attribute, and you get the same result on your site.
The default variant: highlighted code, nothing else. Indentation inside the element is removed.
highlight-lines uses the displayed numbers, so it follows start-line.
Header with title and language, search, wrap toggle, download, full screen and copy. Open the search and press Enter to move between matches.
Individual attributes always win over the variant preset.
Without a header, actions float in the corner and appear on hover or focus.
Lines starting with + and - are marked as added and removed. The copy button copies the diff as written.
collapsible="4" shows four lines and a button; wrap soft-wraps long lines.
Common languages are bundled; the other 180 are fetched only when used. language="auto" detects the language.
theme picks a built-in theme; CSS variables override any token. This page sets
.brand-example { --vt-accent: #7c9cff; --vt-accent-fg: #7c9cff; --vt-radius: 4px; }.
English and French ship with the library; register other languages with Vitrine.registerLocale().
GitHub Flavored Markdown with highlighted code blocks. The text uses the page font.
Preview, source and split tabs (use the arrow keys), table of contents, heading anchors, search and copy.
tabs picks which tabs exist and in which order; default-tab picks the first one shown.
By default raw HTML is shown as text. With allow-html it is rendered, but sanitized: the event handler below is removed.
images="block" replaces images with their alt text, so content cannot track readers with remote pixels.
src loads same-origin files by default. Relative links and images resolve against the file.
The simple variant formats and highlights JSON. Numbers are shown exactly as written.
Click a row to see its JSONPath and copy it. Arrow keys move through the tree; Right and Left open and close nodes.
view, sort-keys and indent shape the raw view.
The error says what is wrong and where, and the line is highlighted. on-invalid="raw" shows the text with a notice instead.
mode="edit" turns any element into an editor. Tab indents, Enter keeps the indentation,
Ctrl+Z and Ctrl+Y undo and redo, Escape then Tab leaves the field.
edit-toggle adds a button that switches between reading and editing.
Source and preview side by side, scrolled together. The preview updates as you type.
Errors show their line and column as you type; the Tree tab shows the document once it is valid.
split-preview puts the preview on the right, left, bottom or top. The full variant adds buttons
to swap and stack the panes.
258 themes from highlight.js, loaded on demand. syntax-theme-dark is used when the interface
theme is dark. See them all on the themes page.
Variants are shortcuts. Here: no variant, but a header, full screen and copy, and no language badge.
Click a column to sort it. Numbers and dates sort by value; empty cells always go last.
The delimiter is detected; header-row="false" names the columns, page-size paginates.
Colors, counts and links come from the data. clickable makes them buttons firing vt-tag-click.
Type # and a word: suggestions appear, Enter picks one, a space or a comma creates a new tag.
Backspace twice removes the last tag.
The full variant adds a browse panel with a filter and checkboxes, and a button to clear the selection.
Tokens restyle every tag; per-tag parts target single tags. This page sets
.square-tags { --vt-tag-radius: 4px; } and
.square-tags::part(tag-kind-danger) { font-weight: 700; }.
Side by side, with changed words marked and unchanged lines folded. Copy gives a standard patch.
Give it the output of git diff: hunks are read, gaps between them are marked.
Lines starting with $ are commands: hover one to copy it without the
prompt. The header button copies every command, ready to run.
escapes lets you write \e in HTML. Colors follow the theme;
carriage returns redraw the line, so the progress bar shows its final state.
ada@box:~/app$ is a prompt too. A command ending with \
continues on the next line, and is copied as one command.
collapse-output="4" keeps long logs short. Search still finds hidden lines.
typing types each command when the session comes into view, then shows
its output. Press Replay to watch it again.
+, -, ~ and * mark added, removed,
modified and highlighted entries; # text adds a note.
Paste the output as it is; sort="name" puts folders first.
One path per line, as git ls-files prints them.
href-template turns files into links; depth="1" keeps
folders closed at first.
Raw HTTP, as in a .http file. The token and the API key are masked; the
eye button shows them. Open the Code tab for curl, fetch, Python and HTTPie.
Paste "Copy as cURL" from your browser. view="code" opens the Code tab;
snippets picks the languages and their order.
layout="columns" puts the response next to the request on wide screens.
Plain text, JSON lines and logfmt in one log. The level buttons show or hide each level; the stack trace stays with its error.
levels chooses the levels shown at first; the others stay one click away.
Every numeric column is a series. Point at the chart, or focus it and use the arrow keys: the values are announced. The Table tab shows the same data.
stacked piles the series; unit and compact format the values.
Chart.js style data works as is; type="pie" draws the first series as a donut.
Open an endpoint: parameters, request body, responses and schemas, then an example request with curl, fetch, Python and HTTPie code.
Secret values are masked in the table, the raw view, copy and download until the eye button reveals them. References link to the variable they use.
[sections] group the keys; the Raw tab shows the file as written.
The badge names the file type from its first bytes. Point at a byte to see it in both columns, or focus the dump and move with the arrow keys.
format="base64" reads base64; columns and group set the layout. Search accepts hex bytes or text.
Events are grouped by day with the time elapsed between them. The kind buttons show or hide each kind; long descriptions fold.
A Keep a Changelog file becomes one release per version, with its sections as tags.
The bar follows the steps; a running step shows its own progress. Open a step to read its log.
The failed step opens by default, with ANSI colors in its log. The search goes through every step.
git log --graphPaste the output of git log --graph --oneline --decorate: lanes, merges and labels are drawn from it. Select a commit to see its details.
With --pretty=format:'%H|%P|%an|%ad|%D|%s' the lanes are computed from the parents. The branch buttons show only what a branch reaches.
The pattern is colored by part and explained in words; each group has its color in the text and its column in the table.
replace shows the result of the substitution, with $1 or $<name>.
The tree shows values resolved; the Raw tab keeps the YAML with its comments and anchors. Copy as JSON gives the same data as JSON.
A stream with --- becomes a list of documents.
Elements, attributes and text as a tree, with namespaces. Select a node to copy its XPath.
Comments and prefixed names are rows of their own; the namespace URI is the title of a prefixed name.
Tables, inline tables and arrays, with the type of each value.
Dates and times keep their TOML type; numbers are shown as written.
Header and payload as trees, registered claims explained, dates in your language. now fixes the time used for the status.
An unsigned token (alg: none) without expiry is flagged. Nothing is ever verified or sent.
Each field is colored and explained; the next runs are listed in the time zone you choose, with a week grid.
Comments, variables and CRON_TZ are read; every entry gets its description, next run and highlighted command.
Each certificate is a card linked to its issuer; the self-signed root is marked. Fingerprints are computed in the browser.
SHA-1 signatures and RSA keys under 2048 bits are flagged. The ASN.1 tab shows the raw structure.
For data you did not write, set the content property (or data on
<vt-json>). It is never parsed as HTML.
Creates the element, sets its attributes and content, and puts it in the target.
The data property serializes any value. Every component dispatches vt-* events.