A powerful, feature-rich text and source code editor for macOS and Web, inspired by Notepad++.
🚀 Try it in your browser · Landing Page · Releases
Notemac++ brings the familiar power of Notepad++ to macOS — both as a native desktop app (via Tauri or Electron) and as a web application. It features syntax highlighting for 73+ languages, a tabbed interface with drag-and-drop reordering, split views, macro recording, bookmarks, powerful find/replace with regex, built-in Git integration, an AI coding assistant with multi-provider support, an integrated terminal, code snippets, Compile & Run execution in 73+ languages, and much more.
Mac Glass — the default theme, with warm orange accents and glassmorphism-inspired palette.
More themes and features
Dark theme
Light theme
Monokai theme
Dracula theme
Solarized Dark theme
Solarized Light theme
Find & Replace with regex support, mark system, and multiple search modes.
Web (any platform):
./build-web.shThis builds and serves the app locally. Works on macOS, Linux, and WSL.
Desktop (macOS):
# Portable — runs directly from the disk image
./build-portable-dmg.sh
# Installable — drag to Applications
./build-install-dmg.shDevelopment:
npm install
npm run dev # Web dev server
npm run electron:dev # Electron dev modeCommand Palette & Quick Open — Fast access to every command and file
- Command Palette (
Cmd+Shift+P): Fuzzy-searchable launcher with 100+ commands spanning every menu action, keybinding, and feature - Quick Open (
Cmd+P): Fuzzy file finder that searches all files in the current workspace - Keyboard navigation with arrow keys and Enter
- Real-time filtered results as you type
Editing — Monaco-powered editor with full code intelligence
Notemac++ is built on the Monaco Editor, the same engine that powers VS Code. This gives you:
- Syntax highlighting for 70+ languages including C, C++, Python, JavaScript, TypeScript, Rust, Go, Java, Ruby, PHP, Swift, Kotlin, SQL, HTML/CSS, Markdown, and many more
- Multi-cursor editing
- Code folding with 8 levels of granularity
- Bracket matching and auto-closing for brackets and quotes
- Smart auto-indent
- Comment toggling (line and block comments)
- Configurable tab size, spaces vs. tabs
- Virtual space mode, smooth scrolling
- Minimap for quick navigation
- Indent guides
- Word wrap with optional wrap symbols
- Whitespace and EOL character visualization
- Line numbers with current-line highlighting
Tabs — Drag, pin, color-code, and manage your workspace
- Drag-and-drop tab reordering
- Pin tabs to prevent accidental closure
- Color-code tabs (6 colors: red, green, blue, orange, magenta, or none)
- Visual indicators for modified, pinned, and read-only files
- Middle-click to close
- Right-click context menu: Close, Close Others, Close to Left/Right, Close Unchanged, Close All but Pinned
- Restore last closed tab (with full undo history)
- Recent files list (last 20 files)
- Clone tab to split view
Find & Replace — Regex, marks, and bulk operations
- Find with regex, case-sensitive, whole-word, and wrap-around options
- Replace single or all occurrences
- Find in Files across your workspace
- Incremental search (live results as you type)
- Mark system with 5 color styles — highlight all matches visually, then operate on marked lines: cut, copy, delete, replace, or inverse
- Go to Line dialog
- Go to Matching Bracket
- Bookmark system: toggle, navigate next/previous, clear all
See Keybindings Reference for all search shortcuts.
Split View — Work on two files side by side
- Horizontal or vertical split
- Clone any tab into the split pane
- Synchronized vertical and/or horizontal scrolling
- Close split to return to single-pane mode
Themes — 7 built-in color themes
| Theme | Style |
|---|---|
| Mac Glass | Warm orange/amber glassmorphism (default) |
| Dark | VS Code Dark |
| Light | VS Code Light |
| Monokai | Classic warm palette |
| Dracula | Purple-toned dark theme |
| Solarized Dark | Ethan Schoonover's dark variant |
| Solarized Light | Ethan Schoonover's light variant |
Each theme fully styles the editor, tabs, sidebar, menus, dialogs, and status bar.
Macros — Record, replay, and save action sequences
- Record keyboard actions (typing, deletions, cursor movement, commands)
- Playback recorded macro
- Run macro multiple times (with count dialog)
- Save macros with custom names for reuse
- Recording indicator in the status bar
Sidebar & Panels — File explorer, function list, and more
- File Explorer: Open folders as workspaces, browse the tree, click to open files
- Document List: Quick overview of all open tabs
- Function List: Code symbol navigation
- Clipboard History: Last 50 clipboard entries, paste from history
- Character Panel: Inspect character details and code points
- Search Results: Find-in-files results panel
The sidebar is resizable (150–500px) and togglable with Cmd+B.
Encoding & Line Endings — Full character set support
Notemac++ supports a wide range of encodings: UTF-8, UTF-8 BOM, UTF-16 LE/BE, Windows-1250 through 1258, ISO 8859 family, KOI8-R/U, Big5, GB2312, Shift JIS, EUC-KR, and dozens of DOS/OEM code pages. Line endings are auto-detected and switchable between LF, CRLF, and CR.
See the full list in docs/FEATURES.md.
Line Operations — Sort, deduplicate, trim, and transform
- Sort lines (ascending, descending, case-insensitive, by length)
- Remove duplicate lines (all or consecutive only)
- Remove empty lines (including blank-only)
- Trim leading/trailing/both spaces
- Convert EOL to spaces, TAB to spaces, spaces to TABs
- Insert blank lines above/below
- Reverse line order
Tools — Hashing, encoding, and formatting utilities
- Hash generation: MD5, SHA-1, SHA-256, SHA-512 (from text or file)
- Copy hash to clipboard
- Base64 encode/decode
- URL encode/decode
- JSON format (pretty-print) and minify
Case Conversion — 6 text case transforms
UPPERCASE, lowercase, Proper Case, Sentence case, iNVERT cASE, and RaNdOm CaSe.
Compile & Run — Execute code in 73+ languages
- Multi-language support: 73+ programming languages including C, C++, Python, JavaScript, TypeScript, Rust, Go, Java, Ruby, PHP, Swift, Kotlin, and many more
- Desktop execution: Run code natively on your local system
- Web execution: WASM runtimes with Service Worker caching for browser-based execution
- Cloud execution: Piston API for cloud-based execution of 40+ languages without native WASM runtimes
- Keyboard shortcuts:
F5(run),Shift+F5(clear and run),Ctrl+F5(run and focus output) - Output panel: Real-time output streaming with ANSI color support for colorized terminal output
- Category A-E runtime architecture: Optimized performance and memory usage tiers
More Features
- Shortcut Mapping Presets: Choose between built-in preset mappings (Notemac++ Default, ReSharper) via dropdown in the Shortcut Mapper — plugins can register custom presets
- Compare Files: Side-by-side diff comparison of any two files with Monaco diff editor
- Distraction-Free Mode: Hides all UI chrome for focused writing
- Always on Top: Keep the editor above other windows
- Monitoring (tail -f): Live file watching with auto-scroll
- Column Editor: Multi-line vertical editing
- Run Command: Execute shell commands from within the editor
- Search on Google/Wikipedia: Quick web lookups for selected text
- Open in Browser: Preview files directly
- Insert Date/Time: Configurable format
- File Summary: Line, word, and character counts at a glance
- Session Save/Load: Persist your workspace across sessions
- Copy File Path/Name/Dir: Quick path operations
Git Integration — Full version control from within the editor
- Repository management: Initialize, clone (with GitHub OAuth), and open Git repositories
- Staging & commits: Stage/unstage files, write commit messages, view commit history
- Branch management: Create, switch, and delete branches
- Diff viewer: Side-by-side diff comparison for changed files
- GitHub OAuth: Secure authentication with token encryption and automatic refresh
- Powered by isomorphic-git for full web and Electron compatibility
AI Assistant — Multi-provider AI chat and inline completions
- AI Chat panel: Ask questions, get code explanations, generate code, and refactor
- Inline completions: Context-aware code suggestions as you type
- Multi-provider support: OpenAI (GPT-4), Anthropic (Claude), and Google (Gemini)
- Context actions: Explain, refactor, fix, document, test, simplify, convert language
- XSS-protected responses: Sanitized AI output for safe rendering
- Configurable: Choose your provider, model, and API key in settings
Integrated Terminal — Run commands without leaving the editor
- Built-in terminal emulator powered by Xterm.js
- Run shell commands directly from the editor
- Terminal panel in the sidebar for quick access
Code Snippets — Language-aware snippet management
- Pre-built snippets for popular languages (JavaScript, TypeScript, Python, HTML, CSS, and more)
- Quick insertion via the snippet manager panel
- Create and save custom snippets
- IntelliSense-integrated snippet completion provider
Security — Hardened credential storage and secure flows
- AES-GCM encrypted credential storage with Electron safeStorage integration
- Secure OAuth flows with PKCE and state validation
- Token expiry tracking with automatic cleanup
- XSS protection on all AI-generated content
- No plaintext secrets in localStorage
Notemac++ follows a layered architecture with clear separation of concerns:
| Layer | Responsibility |
|---|---|
| Configs | Static settings and configuration data |
| Models | Runtime state (tabs, search, macros, UI, file tree) |
| Controllers | Business logic and coordination |
| ViewPresenters | UI components — no business logic |
State management uses Zustand with Immer for immutable updates, split into composable slices. Dependencies are resolved through a lightweight Service Locator pattern, and components communicate via a typed event dispatcher (pub/sub).
For more detail, see docs/ARCHITECTURE.md.
src/
├── Notemac/ # Project-specific code
│ ├── Commons/ # Constants, enums, shared types
│ ├── Configs/ # EditorConfig, ThemeConfig
│ ├── Controllers/ # Business logic controllers
│ ├── Model/ # TabModel, SearchModel, MacroModel, UIModel, FileTreeModel, SnippetModel, GitModel, AIModel
│ └── UI/ # ViewPresenter components
│ └── Params/ # Parameter/DTO classes
├── Shared/ # Reusable framework library
│ ├── DependencyInjection/ # Service locator
│ ├── EventDispatcher/ # Typed pub/sub events
│ ├── Helpers/ # FileHelpers, IdHelpers
│ ├── Persistence/ # Save/load + credential encryption
│ ├── Pooling/ # Object pool management
│ └── Git/ # Git integration adapter
├── components/ # React UI components
├── store/ # Zustand store slices
└── __tests__/ # 2,169 unit tests (101 suites, Vitest)
npx vitest run2,237 unit tests across 102 test suites, ~800 web E2E tests across 43 Playwright spec files, and 214 Electron E2E tests across 4 Playwright Electron spec files — covering every source file, all UI components, panels, dialogs, keyboard shortcuts, menu actions, and user flows for both web and desktop.
npx playwright test # E2E testsSee docs/TESTING.md for details.
How Notemac++ stacks up against other editors:
| Feature | Notemac++ | Notepad++ | VS Code | Sublime Text |
|---|---|---|---|---|
| Platform | macOS / Web | Windows | All | All |
| Size | ~10-15 MB (Tauri) | ~5 MB | ~300 MB | ~30 MB |
| Startup Time | Instant | Fast | Moderate | Fast |
| Syntax Languages | 70+ | 80+ | 200+ | 50+ |
| Built-in Git | Yes | No | Yes | No |
| Built-in AI | Yes (multi-provider) | No | Via Copilot | No |
| Terminal | Yes | No | Yes | No |
| Command Palette | Yes | No | Yes | Yes |
| Quick Open | Yes | No | Yes | Yes |
| Macros | Yes | Yes | Via Extensions | Yes |
| Split View | Yes | Yes | Yes | Yes |
| Code Snippets | Yes | No (plugins) | Yes | Yes |
| Mark System | Yes (5 colors) | Yes (5 styles) | No | No |
| Column Editor | Yes | Yes | Via Extensions | Yes |
| Compare Files | Yes | Via Plugin | Yes | Via Plugin |
| Themes | 7 | 30+ | 1000+ | 25+ |
| Plugins | Yes (5 bundled) | 200+ | 30K+ | 5K+ |
| Runs in Browser | Yes | No | Yes (vscode.dev) | No |
| Price | Free (MIT) | Free (GPL) | Free | $99 |
Notemac++ is purpose-built for macOS and web users seeking Notepad++ familiarity with modern web technology and native desktop integration. It combines the simplicity of Notepad++ with power features found in VS Code — without the overhead.
- ✅ Compile & Run — Execute code in 73+ languages (DONE)
- Workspace & Project Settings — Per-folder editor and formatter settings
- Remote File Editing — Edit files over SSH/SFTP
- Debug Support — Breakpoints and step-through debugging
Have a feature request? Open an issue or discussion.
All changes go through pull requests with mandatory CI checks — no direct pushes to main. See docs/WORKFLOW.md for the full branching and PR workflow.
We welcome contributions! Please read CONTRIBUTING.md for guidelines on:
- Setting up your development environment
- Project architecture and coding standards
- How to submit pull requests
- Code of conduct
| Target | Command | Output |
|---|---|---|
| Web (dev) | npm run dev |
localhost:5173 |
| Web (prod) | ./build-web.sh |
Built + served |
| Desktop/Electron (dev) | npm run electron:dev |
Live Electron window |
| Desktop/Tauri (dev) | npm run tauri:dev |
Live Tauri window |
| Desktop/Tauri (build) | npm run tauri:build |
src-tauri/target/release/bundle/ |
| Portable DMG | ./build-portable-dmg.sh |
release/Notemac++-Portable.dmg |
| Installable DMG | ./build-install-dmg.sh |
release/Notemac++-Installer.dmg |
Build scripts auto-install prerequisites (Homebrew, Node.js, Python/Pillow) if missing.
See docs/BUILDING.md for full build documentation.
| Technology | Role |
|---|---|
| React | UI framework |
| Monaco Editor | Code editor engine |
| TypeScript | Type-safe development |
| Zustand + Immer | State management |
| Vite | Build tooling |
| Electron | Desktop shell (legacy) |
| Tauri | Desktop shell (lightweight, ~10-15MB vs ~50MB) |
| isomorphic-git | Git operations (web & desktop) |
| Xterm.js | Integrated terminal emulator |
| OpenAI / Anthropic / Google AI | Multi-provider AI assistant |
| Vitest | Unit testing framework |
| Playwright | E2E testing framework |
Sergio Agustin De Vita LinkedIn · GitHub · Ko-fi
If you find Notemac++ useful, consider supporting its development:
This project is licensed under the MIT License.







