- Kasca 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 may not be supported or the 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-device
permissions 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
Kasca is a web-based application that requires no installation. To access Kasca:
- Open your web browser
- Navigate to https://kasca.dulapahv.dev/.
- The platform will load automatically in your browser
To create a new coding session:
- On the homepage, locate the
Create a Room
section - Enter your preferred display name in the
Name
field - Click
+ Create Room
to 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 Room
section - Input the room ID provided by the room creator in the
Room ID
field.When inputting the room ID, no need to include the hyphen
-
as it will be added automatically. - Enter your display name in the
Name
field - Click
Join Room →
- Click the invite link shared with you
- Enter your display name in the
Name
field 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
Name
field 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
Kasca allows you to share your room with others using multiple methods:
- Click the
Share
button in the top bar - Copy the room ID from the
Room ID
field
- Click the
Share
button in the top bar - Click the
Copy Invite Link
button
- Click the
Share
button in the top bar
The Monaco Editor forms the core of Kasca'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 Settings
button and upload a JSON file - To export settings, click on the
Export Settings
button 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 Code
button - 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 3
Empty 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 kasca-terminal-<date>--<time>.txt
, for example kasca-terminal-06-01-2025--17-37-28.txt
-
Terminal output will not contain Kasca 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
Kasca allows you to connect your GitHub account to open and save files directly from your repositories.
Kasca 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
Settings
button in the top bar - Click on the
Connect to GitHub
button - 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
Settings
button in the top bar - Click on the
Disconnect
button
-
Click on the
File
menu 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
Kasca 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
File
menu 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
View
menu 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 note
button in the Notepad - Enter the note name and click
Save
Notes are saved in markdown format with the .md
extension.
- Click on the
Open note
button in the Notepad - Select the note you want to open
For a list of supported file formats, refer to the Notepad Features section.
Kasca 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, Kasca 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.
The Live Preview is not updating or displaying this error (where x
is a random string):
The webpage at https://xxxxxx-preview.sandpack-static-server.codesandbox.io/ might be temporarily down or it may have moved permanently to a new web address.
This issue can be caused by:
- Idling for an extended period
- Network connectivity problems
To resolve this issue:
- Re-toggle the Live Preview panel by going to
View > Live Preview
in the top menu bar
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
source
mode in the Notepad - Correct the markdown syntax or commands
- Switch back to
rich text
mode 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-XXXX
format whereX
is 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
source
mode in the Notepad - Correct the markdown syntax or commands
- Switch back to
rich text
mode 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 Preview
in 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.
Kasca 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. The session ends and all data in the room is deleted immediately when all users leave the room.
When using Kasca, 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.
Kasca 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.
Kasca 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.
Kasca uses GitHub OAuth to authenticate users and access repositories. When you connect your GitHub account, Kasca 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, therepo
scope 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)
Kasca 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 Kasca 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 | Ctrl + Shift + / |
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 | v3.x |
Animate.css | v4.1.1 |
AOS | v2.3.1 |
Swiper | v11.x |
HTMX | v2.0.4 |
Lucide Icons | latest |
Alpine.js | v3.x |
GSAP | v3.12.5 |
Popper | v2.x |
Tippy.js | v6.x |
React | v18.x |
React DOM | v18.x |
PropTypes | latest |
Recharts | latest |
Chart.js | latest |
Lodash | v4.17.21 |
Day.js | v1.11.10 |
Sortable.js | v1.15.0 |
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 to 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 | ![Alt Text](image-url "title") 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 c ,cpp ,cs ,css ,go ,html ,java ,js ,json ,jsx ,md ,php ,py ,rs ,sh ,ts ,tsx ,yaml |
```py [code]``` |
Insert admonition | Insert an admonition. Supports note ,tip ,danger ,info ,caution |
:::note [text] ::: |
Rich text mode | Switch to rich text mode | |
Diff mode | Switch to diff mode | |
Source mode | Switch to source mode (markdown) |