- CodeX User Manual
- Getting Started
- Room Sharing
- Code Editor
- Follow Mode
- Code Execution
- Shared Terminal
- GitHub Integration
- Live Preview
- Notepad
- Video & Voice Communication
- Troubleshooting
- Live Preview not Updating or Displaying Error
- Follow Mode not working
- Code is not Syncing Between Users
- This language is not supported or the execution server is down
- No code to execute
- Error parsing markdown
- Please check the information and try again
- Failed to import settings. Please check the file format
- Parsing of the Following Markdown Structure Failed
- Error accessing media devices
- Please grant
media-devicepermissions to see available devices - Error enumerating devices
- Error toggling
media-device - Error Setting Audio Output
- No active media stream
- No audio track found
- Error creating peer connection
- Performance Tips
- Security Considerations
- Privacy and Security
- Appendix
CodeX is a web-based application that requires no installation. To access CodeX:
- Open your web browser
- Navigate to https://codex.dulapahv.dev/.
- The platform will load automatically in your browser
To create a new coding session:
- On the homepage, locate the
Create a Roomsection - Enter your preferred display name in the
Namefield - Click
+ Create Roomto start a new session - You'll be automatically redirected to your coding room
A valid room ID must be in a XXXX-XXXX format where X is an alphanumeric character.
There are three ways to join an existing room:
- On the homepage, find the
Join a Roomsection - Input the room ID provided by the room creator in the
Room IDfield.When inputting the room ID, no need to include the hyphen
-as it will be added automatically. - Enter your display name in the
Namefield - Click
Join Room →
- Click the invite link shared with you
- Enter your display name in the
Namefield when prompted - Click
Join Room →
- Use your mobile device to scan the QR code shared by the room creator
- Enter your display name in the
Namefield when prompted - Click
Join Room →
Once you enter a room, you'll see several key interface elements. The interface is divided into several sections, each section contains multiple panels.
- Panels can be resized by dragging the dividers
- Panels can be hidden/shown using toolbar buttons (
view > panel name)
- Menu Bar
- Contains File, Edit, Selection, View, and Help menus
- Run Code Button
- Execute your code directly from the editor
- For list of supported execution languages, refer to the Supported Execution Languages section
- User List
- Displays the list of users in the room
- Share Button
- Share your room with others via a link or QR code
- Follow User
- Opens a dropdown to follow another user's actions
- Settings
- Connect to GitHub, and adjust editor settings
-
Left Most Panel - Notepad
- Rich text formatting toolbar (Bold, Italic, Underline, etc.)
- Block type selector for different content types
- Collaborative note-taking area
- Table and media insertion tools
-
Center Left Panel - Code Editor
- Main coding area with syntax highlighting
- Line numbers
- Real-time collaboration
- Multi-cursor support
-
Right Right Panel - Live Preview
- Live preview of code output
- UI rendering for web development
- Real-time updates
-
Right Most Panel - Video & Voice Communication
- Video and voice communication controls
- Toggle camera, microphone, and audio settings
- See and hear other participants
- Terminal
- Shared terminal with welcome message
- Command output display
- Download and clear outputs options
- Color-coded text output
- Language Selector:
- Shows current programming language (e.g., "HTML")
- For list of supported editor languages, refer to the Supported Editor Languages section
- Line and Column Indicator:
- Shows cursor position in the editor
CodeX allows you to share your room with others using multiple methods:
- Click the
Sharebutton in the top bar - Copy the room ID from the
Room IDfield
- Click the
Sharebutton in the top bar - Click the
Copy Invite Linkbutton
- Click the
Sharebutton in the top bar
The Monaco Editor forms the core of CodeX's collaborative coding environment, enabling multiple users to code together in real-time. Key features include:
- Real-time synchronization of code changes across all participants
- Multi-cursor support showing everyone's positions
- Syntax highlighting for over 90 programming languages (For a list of supported editor languages, refer to the Supported Editor Languages section)
- Intellisense for code completion
- Error detection and linting
- You can configure, import and export editor settings to customize your coding environment. Learn more in the Code Editor Settings section
- The editor supports multiple shortcuts for common actions. Refer to the Keyboard Shortcuts in Menu Bar section for a list of supported shortcuts
Each participant's cursor is displayed with a unique color. The color is generated from user name and is consistent across all participants
- Cursor labels show usernames and colors
- Cursor positions are updated in real-time as users type or move
- Cursor labels appear above the text by default, and appear below when at the first line of the editor
- Active selections are highlighted for all participants
- Selection highlights appear in both the main editor and minimap
- Multiple concurrent selections from different users are supported
- Selection information (character count) is displayed in the lower right corner of the status bar
You can configure the code editor as well as its theme to suit your preferences by going to Settings in the upper right corner of the top bar.
- To import settings, click on the
Import Settingsbutton and upload a JSON file - To export settings, click on the
Export Settingsbutton to download a JSON file
The settings are persisted across sessions and are stored in your browser's local storage.
Follow Mode allows users to track another participant's actions in real-time by syncing their view with the followed user's view.
-
Click on the Follow User button in the upper right corner of the top bar
-
Select or search for the user you want to follow
-
Your editor view will now sync with the selected user's actions
- You cannot follow a user who is already following you
- You cannot follow a user who is already following another user
You can execute code directly from the editor using the Run Code button in the top bar. The output will be displayed in the Shared Terminal.
For a list of supported execution languages, refer to the Supported Execution Languages section.
You can pass arguments to your code by:
- Click on the arrow down icon next to the
Run Codebutton - Enter your arguments or input in the text area
Arguments and Input must be separated by a newline. For example:
input1
42 Bangkok
1 2 3Empty lines are ignored. You can also use ' and " in your arguments and input.
The Shared Terminal allows you to execute commands and view the output in real-time. The terminal is shared among all participants in the room.
At the upper right corner of the terminal panel, you can Download Output or Clear Output.
File name will be codex-terminal-<date>--<time>.txt, for example codex-terminal-06-01-2025--17-37-28.txt
-
Terminal output will not contain CodeX welcome message
-
Example output file:
[18:35:33.060] 🚀 Executing code... [18:35:33.760] - python v3.10.0 (700ms) Hello World
- Clear the terminal output
CodeX allows you to connect your GitHub account to open and save files directly from your repositories.
CodeX requires repo access scope to read and write to your repositories. For more information, refer to the GitHub Access Permissions section.
To connect your GitHub account:
- Click on the
Settingsbutton in the top bar - Click on the
Connect to GitHubbutton - Follow the prompts to authenticate your GitHub account
- Once connected, you can open and save files from your GitHub repositories
To disconnect your GitHub account:
- Click on the
Settingsbutton in the top bar - Click on the
Disconnectbutton
-
Click on the
Filemenu in the top bar -
Click on
Open from GitHub- If you are not connected to GitHub, you will be prompted to connect your account
- If the current code editor is not empty, a confirmation dialog will appear asking if you want to replace the current code with the file from GitHub
-
Select the repository, branch, and file you want to open
-
The file will be loaded into the editor
CodeX will automatically detect the language of the file and switch the editor's language mode accordingly. Other users' editors will also automatically switch to the same language mode.
- Click on the
Filemenu in the top bar
- Click on
Save to GitHub- If you are not connected to GitHub, you will be prompted to connect your account
- Enter the file name and commit message
- Click
Save
Upon saving, an alert will appear at the bottom right corner of the screen indicating the success or failure of the save operation. From there, you can click on the link to view the commit on GitHub.
The Live Preview panel allows you to see real-time updates of your code output. It is particularly useful for web development to see how your code renders in a browser.
- Tailwind CSS utility classes are available
- Add custom styles with
<style>tags - Add custom scripts with
<script>tags - Add external libraries in
<head>tags
For a list of pre-installed libraries, refer to the Pre-Installed Libraries for Live Preview section.
- Click on the
Viewmenu in the top bar - Click on
Live Preview
- Only HTML code is supported
<style>
.test {
background-color: blue;
}
</style>
<p class="test text-5xl text-white font-bold">
Hello World
</p><div class="bg-black p-4 h-full">
<div class="mx-auto max-w-4xl space-y-4">
<!-- Alpine.js example -->
<div
x-data="{ count: 0 }"
class="rounded-lg bg-neutral-900 p-6 shadow-lg"
>
<div class="mb-4 flex items-center gap-2">
<i data-lucide="plus-circle" class="size-5 text-blue-500"></i>
<h2 class="text-xl font-semibold text-neutral-50">
Interactive Counter
</h2>
</div>
<button
@click="count++"
class="rounded bg-blue-500 px-4 py-2 text-white transition-colors hover:bg-blue-600"
data-tippy-content="Click me to increment!"
>
Count: <span x-text="count" class="font-bold"></span>
</button>
</div>
<!-- GSAP example -->
<div id="gsap-box" class="rounded-lg bg-neutral-900 p-6 shadow-lg">
<div class="mb-4 flex items-center gap-2">
<i data-lucide="move-3d" class="size-5 text-blue-500"></i>
<h2 class="text-xl font-semibold text-neutral-50">GSAP Animation</h2>
</div>
<div id="animated-box" class="size-16 rounded bg-blue-500"></div>
</div>
<!-- Chart Container -->
<div class="rounded-lg bg-neutral-900 p-6 shadow-lg">
<div class="mb-4 flex items-center gap-2">
<i data-lucide="line-chart" class="size-5 text-blue-500"></i>
<h2 class="text-xl font-semibold text-neutral-50">Monthly Sales</h2>
</div>
<div class="relative">
<canvas id="myChart"></canvas>
</div>
</div>
</div>
<script>
// Initialize libraries
lucide.createIcons();
tippy('[data-tippy-content]');
// GSAP animation
gsap.to('#animated-box', {
rotation: 360,
x: 100,
duration: 2,
repeat: -1,
yoyo: true,
ease: 'power1.inOut',
});
// Chart.js setup
const data = {
labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'],
datasets: [
{
label: 'Sales',
data: [4000, 3000, 2000, 2780, 1890, 2390],
borderColor: '#3b82f6', // blue-500
backgroundColor: '#3b82f680',
tension: 0.4,
pointRadius: 6,
pointHoverRadius: 8,
},
{
label: 'Profit',
data: [2400, 1398, 9800, 3908, 4800, 3800],
borderColor: '#10b981', // emerald-500
backgroundColor: '#10b98180',
tension: 0.4,
pointRadius: 6,
pointHoverRadius: 8,
},
],
};
// Chart configuration
const config = {
type: 'line',
data: data,
options: {
responsive: true,
maintainAspectRatio: false,
scales: {
y: {
beginAtZero: true,
grid: {
color: '#404040',
},
ticks: {
color: '#e5e5e5',
},
},
x: {
grid: {
color: '#404040',
},
ticks: {
color: '#e5e5e5',
},
},
},
plugins: {
legend: {
labels: {
color: '#e5e5e5',
},
},
tooltip: {
backgroundColor: '#262626',
titleColor: '#e5e5e5',
bodyColor: '#e5e5e5',
borderColor: '#525252',
borderWidth: 1,
padding: 10,
displayColors: true,
},
},
},
};
// Create chart
const ctx = document.getElementById('myChart');
new Chart(ctx, config);
</script>
</div>The Notepad panel allows you to take notes in a rich text format. It supports markdown syntax for text formatting and organization.
For a list of supported notepad features, markdown syntax, and shortcuts, refer to the Notepad Features and Markdown Syntax section.
You can switch between rich text and source modes in the Notepad to view and edit markdown syntax.
In case of an error parsing markdown, you can switch to source mode to fix the error. Refer to the Error parsing markdown section.
Notepad, unlike the code editor, is not optimized for real-time updates and may be slow on low-end devices when handling large amounts of text.
You can save notes to your local device or open existing notes in the Notepad.
- Click on the
Save notebutton in the Notepad - Enter the note name and click
Save
Notes are saved in markdown format with the .md extension.
- Click on the
Open notebutton in the Notepad - Select the note you want to open
For a list of supported file formats, refer to the Notepad Features section.
CodeX supports video and voice communication between participants in a room. You can toggle your camera, microphone, and audio settings in the Video & Voice Communication panel.
Upon joining the room, CodeX will prompt you to grant permissions to access your media devices (camera, microphone, audio).
- To turn on camera, microphone, or audio, simply click on the respective buttons in the Video & Voice Communication panel.
- To change devices, click on the dropdown menu next to the respective button and select the desired device.
For troubleshooting video and audio issues, refer to the Troubleshooting section.
This issue can be caused by:
- Following a user who is already following you
- Following a user who is already following another user
- Network connectivity problems
To resolve this issue:
- Stop following the user
- Ask the user to stop following you
- Re-enable Follow Mode
This issue can be caused by:
- Network connectivity problems
This issue cannot be caused by idling for an extended period as Socket.IO maintains a persistent connection by pinging the server periodically.
To resolve this issue:
- Save your work, either by saving to local or GitHub
- Leave the room and create a new room
This issue can be caused by:
- The selected language is not supported for execution
- The execution server is down
To resolve this issue:
- Check the list of supported execution languages
- Wait for the execution server to come back online
This issue can be caused by:
- No code in the editor
To resolve this issue:
- Write code in the editor
This issue can be caused by:
- Incorrect markdown syntax
- Incorrect markdown commands
To resolve this issue:
- Switch to
sourcemode in the Notepad - Correct the markdown syntax or commands
- Switch back to
rich textmode to see if the error disappears
This issue can be caused by:
- Not filling in the required fields
- Fields containing incorrect information
- Name must not be empty and must not exceed 64 characters
- Room ID must be in
XXXX-XXXXformat whereXis an alphanumeric character
To resolve this issue:
- Check the information entered in the fields
- Correct any errors
This issue can be caused by:
- Trying to import settings from an unsupported file format
- Settings file is not a valid JSON file or is corrupted
To resolve this issue:
- Check the file format and ensure it is a valid JSON file
This issue can be caused by:
- Incorrect markdown syntax
- Incorrect markdown commands
To resolve this issue:
- Switch to
sourcemode in the Notepad - Correct the markdown syntax or commands
- Switch back to
rich textmode to see if the error disappears
This issue can be caused by:
- Browser permissions are not granted
To resolve this issue:
- Grant the browser permissions to access media devices (camera, microphone, audio)
This issue can be caused by:
- Browser permissions are not granted
To resolve this issue:
- Grant the browser permissions to access media devices (camera, microphone, audio)
This issue can be caused by:
- Browser permissions are not granted
To resolve this issue:
- Grant the browser permissions to access media devices (camera, microphone, audio)
This issue can be caused by:
- Media device is invalid
- Browser permissions are not granted
To resolve this issue:
- Grant the browser permissions to access media devices (camera, microphone, audio)
- Leave the room and refresh the page then rejoin the room
- Reopen the browser and recreate the room
This issue can be caused by:
- Audio device is invalid
To resolve this issue:
- Leave the room and refresh the page then rejoin the room
- Reopen the browser and recreate the room
- Change to other audio devices
This issue can be caused by:
- Disconnected from the server
To resolve this issue:
- Leave the room and refresh the page then rejoin the room
- Reopen the browser and recreate the room
This issue can be caused by:
- Disconnected from the server
To resolve this issue:
- Leave the room and refresh the page then rejoin the room
- Reopen the browser and recreate the room
This issue can be caused by:
- Disconnected from the server
To resolve this issue:
- Leave the room and refresh the page then rejoin the room
- Reopen the browser and recreate the room
Live Preview is a heavy feature that may impact performance on low-end devices as it requires constant updates. To improve performance:
- Close the Live Preview panel when not in use by going to
View > Live Previewin the top menu bar
The Notepad may also be slow on low-end devices when handling large amounts of text as it is not optimized for real-time updates. To improve performance:
- Avoid having multiple users editing the same note simultaneously
- Limit the amount of text in a single note
Live Preview and Code Execution will run code in a sandboxed environment to prevent malicious code execution. However, it is recommended to avoid running untrusted code and pasting sensitive information into the editor.
CodeX does not store any user data on the server except for:
- Display names
- User IDs
- Room IDs
- Code
- Notes
All of which are stored temporarily during a session and is cleared once the session ends. When all users leave the room, a 5-minute grace period begins. If someone rejoins within that time, the room and all its data are preserved. If no one rejoins, the room and its data are permanently deleted. Users can also choose to Terminate Room from the leave dialog to immediately delete the room and all its data without waiting for the grace period.
When using CodeX, your data is encrypted in transit using HTTPS and stored securely on the server. However, it is recommended to avoid sharing sensitive information on the platform.
CodeX uses Vercel Analytics and Cloudflare Web Analytics to collect anonymous usage data for improving the platform including:
- Country of origin
- Browser type
- Operating system
- Page views*
- Referrers
No personal data is collected or stored.
*Page views is collected from users who visit the homepage only so other pages (e.g. session page with room ID) are neither tracked nor exposed.
CodeX uses Sentry for error tracking to help identify and fix issues quickly. No personal data is collected or stored. The Sentry's Session Replay feature is enabled for faster debugging, and all user inputs are masked to prevent data exposure. Learn more about how Session Replay captures data while protecting user privacy.
CodeX uses GitHub OAuth to authenticate users and access repositories. When you connect your GitHub account, CodeX requests only one permission scope:
repo- Grants full access to public and private repositories including read and write access to code, commit statuses, repository invitations, collaborators, deployment statuses, and repository webhooks. Note: In addition to repository related resources, thereposcope also grants access to manage organization-owned resources including projects, invitations, team memberships and webhooks. This scope also grants the ability to manage projects owned by users. (from GitHub's Scopes for OAuth apps)
CodeX does not store your GitHub access token. The token is stored securely in your browser's Cookies and is used only for making API requests to GitHub on your behalf.
To prevent unauthorized access to your GitHub account, the stored GitHub access token will expire after 7 days and you will need to reconnect your GitHub account to continue using the GitHub features.
You can revoke access at any time by disconnecting your GitHub account from CodeX by going to Settings > Github Connection and clicking Disconnect.
Learn more about GitHub's Scopes for OAuth apps.
| Language | File Extensions |
|---|---|
| Plain Text | txt |
| abap | abap |
| Apex | cls |
| Azure CLI | azcli |
| Batch | bat, cmd |
| Bicep | bicep |
| Cameligo | mligo |
| clojure | clj, cljs, cljc, edn |
| CoffeeScript | coffee |
| C | c, h |
| C++ | cpp, cc, cxx, hpp, hh, hxx |
| C# | cs, csx, cake |
| CSP | - |
| CSS | css |
| Cypher | cypher, cyp |
| Dart | dart |
| Dockerfile | dockerfile |
| ECL | ecl |
| Elixir | ex, exs |
| Flow9 | flow |
| F# | fs, fsi, ml, mli, fsx, fsscript |
| FreeMarker2 | ftl, ftlh, ftlx |
| FreeMarker2 | Angle/Dollar |
| FreeMarker2 | Bracket/Dollar |
| FreeMarker2 | Angle/Bracket |
| FreeMarker2 | Bracket/Bracket |
| FreeMarker2 | Auto/Dollar |
| FreeMarker2 | Auto/Bracket |
| Go | go |
| GraphQL | graphql, gql |
| Handlebars | handlebars, hbs |
| Terraform | tf, tfvars, hcl |
| HTML | html, htm, shtml, xhtml, mdoc, jsp, asp, aspx, jshtm |
| Ini | ini, properties, gitconfig |
| Java | java, jav |
| JavaScript | js, es6, jsx, mjs, cjs |
| julia | jl |
| Kotlin | kt, kts |
| Less | less |
| Lexon | lex |
| Lua | lua |
| Liquid | liquid, html.liquid |
| Modula-3 | m3, i3, mg, ig |
| Markdown | md, markdown, mdown, mkdn, mkd, mdwn, mdtxt, mdtext |
| MDX | mdx |
| MIPS | s |
| DAX | dax, msdax |
| MySQL | - |
| Objective-C | m |
| Pascal | pas, p, pp |
| Pascaligo | ligo |
| Perl | pl, pm |
| PostgreSQL | - |
| PHP | php, php4, php5, phtml, ctp |
| Unknown | pla |
| ATS | dats, sats, hats |
| PQ | pq, pqm |
| PowerShell | ps1, psm1, psd1 |
| protobuf | proto |
| Pug | jade, pug |
| Python | py, rpy, pyw, cpy, gyp, gypi |
| Q# | qs |
| R | r, rhistory, rmd, rprofile, rt |
| Razor | cshtml |
| redis | redis |
| Redshift | - |
| reStructuredText | rst |
| Ruby | rb, rbx, rjs, gemspec, pp |
| Rust | rs, rlib |
| Small Basic | sb |
| Scala | scala, sc, sbt |
| scheme | scm, ss, sch, rkt |
| Sass | scss |
| Shell | sh, bash |
| sol | sol |
| aes | aes |
| sparql | rq |
| SQL | sql |
| StructuredText | st, iecst, iecplc, lc3lib, TcPOU, TcDUT, TcGVL, TcIO |
| Swift | swift |
| SV | sv, svh |
| V | v, vh |
| tcl | tcl |
| Twig | twig |
| TypeScript | ts, tsx, cts, mts |
| Visual Basic | vb |
| WebGPU Shading Language | wgsl |
| XML | xml, xsd, dtd, ascx, csproj, config, props, targets, wxi, wxl, wxs, xaml, svg, svgz, opf, xslt, xsl |
| YAML | yaml, yml |
| JSON | json, bowerrc, jshintrc, jscsrc, eslintrc, babelrc, har |
Referenced from the Piston documentation.
awk, bash, befunge93, brachylog, brainfuck, bqn, c, c++, cjam, clojure, cobol, coffeescript, cow, crystal, csharp, csharp.net, d, dart, dash, dragon, elixir, emacs, emojicode, erlang, file, forte, forth, fortran, freebasic, fsharp.net, fsi, go, golfscript, groovy, haskell, husk, iverilog, japt, java, javascript, jelly, julia, kotlin, lisp, llvm_ir, lolcode, lua, matl, nasm, nasm64, nim, ocaml, octave, osabie, paradoc, pascal, perl, php, ponylang, powershell, prolog, pure, pyth, python, python2, racket, raku, retina, rockstar, rscript, ruby, rust, samarium, scala, smalltalk, sqlite3, swift, typescript, basic, basic.net, vlang, vyxal, yeethon, zig,
| Action | Shortcut |
|---|---|
| Command Palette | F1 |
| Open from Local | Ctrl + O |
| Open from GitHub | Ctrl + Shift + O |
| Save to Local | Ctrl + S |
| Save to GitHub | Ctrl + Shift + S |
| Settings | Ctrl + , |
| Leave Room | Ctrl + Q |
| Undo | Ctrl + Z |
| Redo | Ctrl + Y |
| Cut | Ctrl + X |
| Copy | Ctrl + C |
| Paste | Ctrl + V |
| Find | Ctrl + F |
| Replace | Ctrl + H |
| Toggle Line Comment | Ctrl + / |
| Toggle Block Comment | Shift + Alt + A |
| Select All | Ctrl + A |
| Copy Line Up | Shift + Alt + ↑ |
| Copy Line Down | Shift + Alt + ↓ |
| Move Line Up | Alt + ↑ |
| Move Line Down | Alt + ↓ |
| Add Cursor Above | Ctrl + Alt + ↑ |
| Add Cursor Below | Ctrl + Alt + ↓ |
| Zoom In | Ctrl + = |
| Zoom Out | Ctrl + - |
| Library | Version |
|---|---|
| Tailwind CSS | v4.x |
| Animate.css | v4.x |
| AOS | v2.x |
| Swiper | v11.x |
| HTMX | v2.x |
| Lucide Icons | v0.x |
| Alpine.js | v3.x |
| GSAP | v3.x |
| Popper | v2.x |
| Tippy.js | v6.x |
| React | v18.x |
| React DOM | v18.x |
| PropTypes | v15.x |
| Recharts | v2.x |
| Chart.js | v4.x |
| Lodash | v4.x |
| Day.js | v1.x |
| Sortable.js | v1.x |
| Feature | Description | Shortcut / Markdown Code |
|---|---|---|
| Open Note | Open a text file in the Notepad. Supports txt, md, mdx, xbl, xsl, vtt, text, xslt, ehtml, sh, html, ics, mjs, js, shtml, xml, csv, css, shtm, htm |
|
| Save Note | Save the current note as a markdown (md) file |
|
| Undo | Undo the last action | ctrl + z |
| Redo | Redo the last undone action | ctrl + y or ctrl + shift + z |
| Bold | Make selected text bold | ctrl + b or **text** |
| Italic | Make selected text italic | ctrl + i or *text* |
| Underline | Underline selected text | ctrl + u or <u>text</u> |
| Inline code format | Format selected text as inline code | `text` |
| Strikethrough | Strike through selected text | ~~text~~ |
| Superscript | Format selected text as superscript | <sup>text</sup> |
| Subscript | Format selected text as subscript | <sub>text</sub> |
| Bulletted list | Create a bulletted list | * List item |
| Numbered list | Create a numbered list | 1. List item |
| Check list | Create a checklist | * [ ] List item |
| Select block type | Select block type for selected text. Supports paragraphs (p), headings (h1 to h6), and blockquote (blockquote) |
# Heading 1, ## Heading 2, ### Heading 3, #### Heading 4, ##### Heading 5, ###### Heading 6, > Blockquote |
| Create link | Create a hyperlink | [Hyperlink Text](url "Title") |
| Insert image | Insert an image. Supports only image URLs |  or <img height="..." width="..." alt="..." src="..."> |
| Insert table | Insert a table | |
| Insert thematic break | Insert a thematic break | *** |
| Insert code block | Insert a code block. Supports languages: apl, asn1, asterisk, brainfuck, c, cpp, csharp, ceylon, clojure, gss, cmake, cobol, coffeescript, commonlisp, crystal, css, cypher, cython, d, dart, django, dockerfile, diff, dtd, dylan, ebnf, ecl, eiffel, elixir, elm, erlang, factor, fcl, forth, fortran, fsharp, gas, gherkin, go, groovy, haml, handlebars, haskell, haxe, html, http, idl, java, js, jsx, jinja2, julia, kotlin, less, livescript, lua, md, mathematica, mbox, mirc, modelica, mscgen, mumps, nginx, nsis, ntriples, objc, ocaml, octave, oz, pascal, pegjs, perl, pgp, php, pig, powershell, properties, protobuf, pug, puppet, python, q, r, rpm, rst, ruby, rust, sas, sass, spreadsheet, scala, scheme, scss, shell, sieve, slim, smalltalk, smarty, solr, soy, stylus, sql, sparql, squirrel, swift, stex, tcl, textile, tiddlywiki, tiki, toml, tornado, troff, tsx, ttcn, turtle, twig, vb, vbscript, velocity, verilog, vhdl, vue, webidl, wast, xml, xquery, yacas, yaml, z80 |
```[language] [code]``` |
| Insert admonition | Insert an admonition. Supports note, tip, danger, info, caution |
:::note [text] ::: |
| Rich text mode | Switch to rich text mode | |
| Source mode | Switch to source mode (markdown) |


































