2026-08-18 14:00:09 +08:00
2023-12-19 20:52:59 +08:00
2024-12-05 18:34:07 +08:00
2019-08-10 22:24:02 +08:00
2026-08-27 11:39:19 +08:00
2019-10-09 09:50:16 +08:00
2025-09-30 00:26:16 +08:00
2026-08-27 11:39:19 +08:00
2020-06-04 18:09:56 +08:00
2019-10-13 21:07:40 +08:00
2025-09-28 17:36:14 +08:00
2024-12-19 22:48:07 +08:00
2021-01-24 14:18:34 +08:00
2026-06-23 11:28:18 +08:00
2019-10-13 21:07:40 +08:00
2024-10-30 15:55:15 +08:00
2024-09-20 17:48:57 +08:00
2026-07-18 07:51:36 +08:00

logo

English · 简体中文 · 日本語

MooTool

Handy desktop toolset for developers.

About

Hi! Thanks for using MooTool. "Moo" is named after my daughter.

I keep building and improving MooTool to support my own day-to-day development work.

Fewer Java developers build with Swing nowadays, but I still enjoy it. So in every bit of free time, I kept working on this project. I finally shipped something, though many similar tools exist on the web.

Hope you enjoy using it as much as I enjoyed building it.

码云Gitee GitHub stars GitHub release GitHub license

Featured|HelloGitHub

Supported platforms

Windows • Linux • macOS

Product lines

Product Introduction Download
MooTool Next Electron Recommended cross-platform edition, rebuilt with Electron, Vite, React, and TypeScript. It is installed, stored, and updated independently from the Java edition. Download 1.1.3
MooTool Java The original Swing-based cross-platform edition, maintained as an independent product line for Windows, Linux, and macOS. Download 1.8.6 · Gitee mirror
MooTool Next Tauri Independent desktop edition built with Tauri 2, Rust, React, and TypeScript; currently under development. Not available yet
MooTool Next macOS Native SwiftUI-based native macOS preview, currently providing the project skeleton and a minimal application shell. Not available yet

Screenshots

Main feature screenshots below. Translation, UA analysis, Image assistant, PDF, environment variables, system info, config conversion, Protobuf, and other modules do not have dedicated screenshots yet — open the corresponding tabs after install.

Quick Note

Quick Note - quick replace

Overview

Overview

Overview

Overview

Overview

Overview

Overview

Overview

Overview

Overview

Overview

Overview

Overview

Overview

Overview

Overview

Theme & appearance

Download

Support the author

If MooTool helps you, consider supporting the evenings and weekends spent building it — your appreciation keeps me motivated.

zanshang

MooTool feature map

Many modules include a History sub-tab: search, apply, copy input/output, delete, and clear all.

MooTool
├── Quick Note
│   ├── Multi-language syntax highlighting
│   ├── Common code formatting
│   │   ├── SQL
│   │   ├── JSON
│   │   └── Java
│   ├── Ordered / unordered lists
│   ├── Markdown live preview
│   ├── Insert images in Markdown
│   ├── Export / batch export, search, global find
│   ├── Document info (created/updated time, word count, etc.)
│   ├── Link detection and click-to-open
│   ├── Font, font size, list colors
│   └── Quick replace panel
│       ├── Batch text operations in the side panel (selected lines only):
│       ├── Auto save
│       ├── Trim spaces
│       ├── Remove empty lines
│       ├── Remove tabs (\t)
│       ├── Scientific notation → plain number
│       ├── Plain number → scientific notation
│       ├── Plain number → thousands separator
│       ├── Thousands separator → plain number
│       ├── snake_case → camelCase
│       ├── camelCase → snake_case
│       ├── UPPER → lower
│       ├── lower → UPPER
│       ├── Remove line breaks
│       ├── Line break → comma
│       ├── Line break → ','
│       ├── Line break → ","
│       ├── Comma → line break
│       ├── ',' → line break
│       ├── "," → line break
│       ├── Tab (\t) → line break
│       ├── Deduplicate lines
│       ├── Deduplicate lines and count occurrences
│       ├── Escape
│       ├── Unescape
│       ├── Reverse lines
│       ├── Sort lines A→Z
│       ├── Sort lines Z→A
│       └── Sort by pinyin
├── Time convert
│   ├── Timestamp conversion
│   │   ├── Date/time → timestamp (ms)
│   │   ├── Timestamp (ms) → date/time
│   │   ├── Timestamp (s) → date/time
│   │   └── Date/time → timestamp (s)
│   ├── History
│   ├── Fullscreen clock
│   └── Timezone picker and quick shortcuts
├── JSON
│   ├── JSON format
│   │   ├── Sort keys alphabetically
│   │   ├── Ignore key case
│   │   └── Check duplicate keys
│   ├── JSON minify
│   ├── Export / batch export, find
│   ├── Font and size
│   ├── Swap JSON keys and values
│   ├── JSON → XML
│   ├── XML → JSON
│   ├── JavaBean → JSON
│   ├── JSON → JavaBean
│   ├── Escape
│   ├── Unescape
│   ├── Get JSON via JSON Path
│   └── Visual JSON Path picker
├── Translation
│   ├── 20+ languages with auto-detect (Chinese, English, Japanese, Korean, French, Spanish, German, Russian, …)
│   ├── Google / Bing translators with automatic fallback
│   ├── Save to word book
│   ├── Word book
│   │   ├── Search, create, edit, delete
│   │   └── Retranslate
│   └── Translation history
├── Host
│   ├── Host formatting / syntax highlight
│   ├── Manage / view system hosts
│   ├── Import / export hosts
│   └── Search, find & replace
├── HTTP
│   ├── HTTP requests: GET/POST/PUT/DELETE/HEAD/PATCH/OPTIONS
│   ├── Import cURL
│   ├── Format HTTP header/body
│   ├── Request management
│   ├── Request history
│   └── Search
├── UA analysis
│   ├── Parse User-Agent (browser, engine, OS, device type/brand/model, …)
│   ├── Detect mobile / bot crawlers
│   ├── Preset UAs (Chrome, Firefox, Safari, Edge, WeChat in-app browser, curl, …)
│   ├── Paste / clear
│   └── History
├── Encode / decode
│   ├── Native → Unicode
│   ├── Unicode → Native
│   ├── URL encode / decode
│   ├── Native → hex
│   ├── Hex → Native
│   ├── Native → ASCII (decimal/hex code points)
│   ├── ASCII → Native
│   └── History
├── QR code
│   ├── Generate QR code
│   │   ├── Custom size
│   │   ├── Custom error correction level
│   │   └── Custom logo
│   ├── Decode QR code
│   ├── Read from clipboard
│   └── History
├── Crypto / random
│   ├── Supports Chinese national crypto SM2 / SM3 / SM4
│   ├── Symmetric encrypt/decrypt
│   │   ├── AES
│   │   ├── DES
│   │   └── SM4
│   ├── Asymmetric encrypt/decrypt
│   │   ├── RSA
│   │   └── SM2 (encrypt/decrypt, sign, verify)
│   ├── Digest (file/text)
│   │   ├── MD5
│   │   ├── SHA1
│   │   ├── SHA256
│   │   ├── SHA384
│   │   ├── SHA512
│   │   └── SM3
│   ├── Base64 encode/decode
│   ├── Base32 encode/decode
│   ├── Random UUID
│   ├── Random numeric/alpha/alphanumeric strings (custom length)
│   ├── Random strong passwords (custom length)
│   └── History
├── Calculator
│   ├── Arithmetic
│   ├── Base conversion
│   ├── Greatest common divisor
│   ├── Least common multiple
│   ├── Permutations & combinations
│   └── History
├── Network / IP
│   ├── IP lookup
│   ├── Domain lookup
│   ├── netstat
│   ├── ping
│   ├── IPv4 ↔ long conversion
│   ├── WHOIS lookup
│   └── Flush DNS
├── Color board
│   ├── Theme / standard palettes
│   ├── Screen color picker
│   ├── Free-form color pick
│   ├── Color format conversion
│   ├── Favorite colors
│   ├── Color ops (invert, intersect, add, difference, average)
│   └── History
├── Image assistant
│   ├── Local image host
│   ├── Screenshot
│   ├── Clipboard import / export
│   ├── Zoom toolbar (in/out/original/fit)
│   ├── Image Base64 encode/decode
│   ├── Image compression
│   ├── Image watermark
│   └── Image OCR (Tesseract)
├── Cron
│   ├── Cron expression builder
│   ├── Parse cron (Linux 5-field / Quartz 67 field)
│   ├── Validate cron
│   ├── Cron to natural language
│   ├── Next 10 run times
│   ├── Favorite cron expressions
│   ├── History
│   └── Common cron examples
├── Regex
│   ├── Regex match test
│   ├── Favorite regex
│   ├── Common regex patterns
│   └── History
├── Java
│   ├── Java/Groovy format & highlight
│   ├── Java/Groovy interpret & run
│   └── History
├── Reformat
│   ├── Format uploaded files
│   │   ├── Nginx config
│   │   ├── XML
│   │   ├── HTML
│   │   └── Java
│   ├── Paste & format (Nginx / Java / XML / HTML)
│   └── History
├── PDF
│   ├── Split PDF
│   └── Merge PDF
├── Environment
│   ├── System environment variables (table)
│   ├── Java properties
│   └── Refresh / export
├── System info
│   ├── Collects local system/hardware info via OSHI; loads on first visit or refresh:
│   ├── System (OS, computer, firmware, motherboard, …)
│   ├── CPU
│   ├── Memory
│   ├── Storage
│   └── Network
├── Config conversion
│   ├── Properties → YAML
│   ├── YAML → Properties
│   ├── YAML validate (syntax & line numbers)
│   ├── YAML format
│   ├── History
│   ├── JSON → YAML (TODO)
│   └── YAML → JSON (TODO)
├── Text diff
│   ├── Side-by-side diff (sync scroll)
│   ├── Unified diff
│   └── Copy diff
├── Protobuf
│   ├── JSON ↔ Protobuf binary
│   │   ├── Hex / Base64 output
│   │   └── Format `.proto` definitions
│   ├── Decode wire format (no `.proto` required)
│   ├── Hex / Base64 conversion
│   └── History
└── App & settings
    ├── Sync & backup (Git sync, data export)
    ├── Keyboard shortcuts
    ├── Custom data directory
    ├── Check for updates on startup
    ├── SQL dialect
    ├── System tray
    ├── Window behavior
    │   ├── macOS / Windows: close button hides to Dock/taskbar; app keeps running
    │   └── Linux: close button quits the app
    ├── Appearance
    │   ├── Many themes (Flat Light/Dark, macOS, One Dark, Monokai, …)
    │   ├── Accent color
    │   ├── Follow system accent
    │   ├── Immersive window background
    │   ├── Maximize on startup
    │   └── Tab icons only mode
    └── Layout
        ├── Panel position (top/bottom/left/right)
        └── Global font & size

Acknowledgements

Hutool
FlatLaf
vscode-icons
iconfont

Developer notes

See the multi-product release conventions for version, Git tag, GitHub Release, Latest, and CI isolation rules.

Minimum JDK: 21
Before you start, configure IntelliJ IDEA as shown below, then run maven clean: considerations

Packaging & CI

Packaging JDKs can be downloaded and cached locally:

  • JDK archives: downloads/jdks/
  • Extracted JDKs: jdks/<os>/<arch>/home

The download script uses Eclipse Temurin 21 and skips re-download when already present.

Prepare local packaging JDKs

python3 scripts/prepare_jdks.py --targets mac-x64
python3 scripts/prepare_jdks.py --targets mac-arm64
python3 scripts/prepare_jdks.py --targets windows-x64
python3 scripts/prepare_jdks.py --targets linux-x64

Resolve all download targets:

python3 scripts/prepare_jdks.py --targets all --resolve-only

Local package commands

Default mvn clean package uses your current JDK and builds a macOS universal package.

Profiles mac-intel, mac-apple-silicon, windows-x64, and linux-x64 validate cached JDKs under jdks/ during validate; run scripts/prepare_jdks.py first or the build fails fast.

Package for a specific platform using cached JDKs:

mvn clean package -Pmac-intel -Dmaven.test.skip=true
mvn clean package -Pmac-apple-silicon -Dmaven.test.skip=true
mvn clean package -Pwindows-x64 -Dmaven.test.skip=true
mvn clean package -Plinux-x64 -Dmaven.test.skip=true

Output directories:

  • Default: target/
  • Intel Mac: target/mac-intel/
  • Apple Silicon Mac: target/mac-apple-silicon/
  • Windows x64: target/windows-x64/
  • Linux x64: target/linux-x64/
Languages
Java 46%
TypeScript 37.3%
CSS 6.9%
Rust 6.3%
Python 2%
Other 1.5%