TextZen is a Markdown note-taking application for MacOS.
- Always display Markdown syntax
- Organize notes with multiple files
- Open source is wonderful
Get .dmg
from the latest release, open it, and drag TextZen
to Applications.
TextZen checks for updates automatically
TextZen manages notes using multiple Markdown files under a specific folder, similar to Obsidian vaults.
After launching the app, press ⌘+O
to open a folder.
Note that TextZen does not support folder hierarchies.
Press ⌘+N
to create a new file. In the title field, you can edit the title portion of the filename <title>.md
.
We'll introduce how to use the editor later. Changes are automatically saved.
Press ⌘+P
to search by filename. You can navigate search results using up/down cursor keys.
Press ⌘+Shift+F
to perform full-text search across files in the folder.
Click on search results to jump to the corresponding location in the file.
Press ⌘+Shift+B
to check references to the current file.
You can customize keyboard shortcuts in two ways:
- Use the settings UI: Click
TextZen > Keyboard Shortcuts
in the menu to open the keyboard shortcuts configuration dialog. - Edit the settings file: Modify the
shortcuts
section in the JSON settings file.
Default shortcuts:
⌘+O
: Open Directory⌘+N
: New File⌘+P
: Search Files⌘+Shift+F
: Full-text Search⌘+Shift+B
: View Backlinks⌘+B
: Toggle Sidebar⌘+0
: Focus File List⌘+1
: Focus Editor
TextZen follows GFM (GitHub Flavored Markdown) standards.
TextZen supports writing and rendering mathematical equations using KaTeX. You can use both inline and block math syntax:
Inline math: $a^2 + b^2 = c^2$
Block math:
$$
\frac{-b \pm \sqrt{b^2 - 4ac}}{2a}
$$
Mermaid.js is supported.
```mermaid
graph TD;
A-->B;
A-->C;
B-->D;
C-->D;
```
Images, links, and tables are parsed and displayed as previews in the editor.
Click TextZen > Settings (JSON)
in the menu to open the settings JSON file in your default application.
{
"view": {
"sidebar": {
"visible": true, // false
"width": 325
},
"theme": "default", // amy, ayuLight, barf, bespin, birdsOfParadise, boyAndGirls, clouds, cobalt, coolGlow, fracula, espresso, noctisLilac, rosePineDawn, smoothy, solarizedLight, tomorrow
"locale": "en" // ja
},
"edit": {
"linkAutoUpdate": true // false
},
"general": {
"path": "/path/to/notes"
},
"shortcuts": {
"openDirectory": "Cmd+O",
"newFile": "Cmd+N",
"searchFile": "Cmd+P",
"searchFullText": "Cmd+Shift+F",
"backLinks": "Cmd+Shift+B",
"toggleSidebar": "Cmd+B",
"focusFileList": "Cmd+0",
"focusEditor": "Cmd+1"
}
}
You can customize TextZen using JavaScript.
JavaScript files can be loaded from <folder>/.text-zen/**.js
. They are treated as modules, so you can use import
syntax to manage multiple files.
Access TextZen's API through window.textZen
.
You can modify TextZen's appearance using CSS.
Create CSS files in <folder>/.text-zen/**.css
.
TextZen's CSS uses variables.
@media (prefers-color-scheme: dark) {
:root {
--color-text-primary: rgb(222, 222, 222);
--color-border-primary: rgb(90, 90, 90);
--color-bg-primary: rgb(30, 30, 30);
--color-bg-active: rgb(240, 240, 240, 0.15);
--color-bg-secondary: rgb(50, 50, 50);
--color-highlight-purple: rgb(106, 47, 126);
}
}
@media (prefers-color-scheme: light) {
:root {
--color-text-primary: rgba(30, 30, 30);
--color-border-primary: rgba(240, 240, 240);
--color-bg-primary: rgb(256, 256, 256);
--color-bg-active: rgb(0, 0, 0, 0.05);
--color-bg-secondary: rgb(240, 240, 240);
--color-highlight-purple: rgb(245, 214, 255);
}
}
At TextZen, we are committed to protecting the privacy of our users. Our app does not collect any personal information about its users. We do not store any user data on our servers or share it with third parties.
Run the following commands to start the development server:
npm i
npm run dev
Run tests with:
npm run test
© 2025 Moeki Kawakami
TextZen's source code is licensed under the Apache License, Version 2.0. Image resources are licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.