Measured Comparison
Apple Character Viewer vs Raycast vs Emoji Picker
This page compares startup latency using one repeatable harness. It does not try to score features or design taste; it reports measured process-visible startup timing.
Emoji Picker
95.05 ms
Warm median (7 relaunch runs)
Apple Character Viewer
95.47 ms
Warm median (7 relaunch runs)
Raycast (v1.104.6)
190.40 ms
Warm median (7 relaunch runs)
Observation in this environment: Raycast warm launch measured about 2.0x slower than native tools (190.40 ms vs about 95 ms).
Latency Bars
Lower is better. Bars are scaled to the slowest value within each metric group.
Warm Median (7 Runs)
Scale: 0 ms to 190.40 ms
First Launch
Scale: 0 ms to 174.91 ms
Latency Table
| Tool | First Launch | Warm Median (7) | Notes |
|---|---|---|---|
| Emoji Picker for macOS | 106.56 ms | 95.05 ms | Process: emoji-picker-macos |
| Apple Character Viewer (built-in) | 93.26 ms | 95.47 ms | Process: CharacterPalette |
| Raycast | 174.91 ms | 190.40 ms | Version 1.104.6, process: Raycast |
Memory And Footprint Snapshot
| Tool | Idle RSS | Bundle On Disk | Main Binary |
|---|---|---|---|
| Emoji Picker for macOS | 110.9 MB | 8.99 MB | 3.76 MB |
| Apple Character Viewer (built-in) | 47.8 MB | 5.51 MB | 0.77 MB |
| Raycast (v1.104.6) | 143.5 MB | Not retained after benchmark run | Not retained after benchmark run |
RSS numbers are from ps after a short settle window and include shared mapped pages.
Invocation Model Context
- These startup timings assume the process is not resident: each app was fully quit before each run.
- Real-world usage can differ because Raycast, Character Viewer, and menu bar tools may stay resident between invocations.
- For always-running workflows, end-to-end insertion flow often matters more than relaunch time.
Keystroke-to-Insert Metric (Protocol)
This page currently publishes startup timings. We are adding a second metric for end-to-end insertion: trigger press to emoji inserted in an active text field, with the same fixed test document and repeated runs per tool.
Reproduce Locally
Minimal commands used for process-visible startup timing:
open -n "/Applications/Emoji Picker.app"
pgrep -x emoji-picker-macos
open -n "/System/Library/Input Methods/CharacterPalette.app"
pgrep -x CharacterPalette
open -n "/Applications/Raycast.app"
pgrep -x Raycast
When Startup Latency Matters
- If you relaunch tools frequently or use on-demand invocation, startup latency is user-visible.
- If the app is always running in the background, startup is less important than insertion and search behavior.
- In short-message workflows, small delays compound quickly across repeated insertions.
Methodology
- Each tool was fully quit before a run.
- Startup was timed from open -n ... to process visibility via pgrep -x.
- First-launch number is one run; warm number is median of 7 relaunch runs.
- Command and environment were identical per tool on the same machine.
Read This Before Drawing Conclusions
- This benchmark measures process-visible startup, not full keystroke-to-insert interaction flow.
- Built-in and Raycast invocation paths can be configured differently per user.
- For daily writing flow, already-running background state and query handling rules often matter more than cold startup.
Use The Data, Then Test Your Own Workflow
Numbers can filter options quickly, but real fit still depends on your typing workflow and app mix.