Your ultimate VRChat OSC companion
A sleek, modern desktop application for VRChat OSC tools featuring an advanced chatbox editor with dynamic placeholders, avatar parameter control, and real-time media integration.
A powerful chatbox editor with dynamic placeholder support to make your messages come alive with real-time data.
The chatbox editor supports 11 powerful modules for dynamic content. Click to expand each module for details:
🎵 Media Info — Display currently playing media information
Display real-time information about your currently playing media with synced lyrics support.
| Placeholder | Output | Description |
|---|---|---|
{{MediaInfo;Status}} |
Playing |
Current playback status (Playing, Paused, Stopped) |
{{MediaInfo;Track}} |
Never Gonna Give You Up |
Currently playing track title |
{{MediaInfo;Artist}} |
Rick Astley |
Artist name |
{{MediaInfo;Album}} |
Whenever You Need Somebody |
Album name |
{{MediaInfo;Position}} |
120000 |
Current position in milliseconds |
{{MediaInfo;Duration}} |
300000 |
Total duration in milliseconds |
{{MediaInfo;AppName}} |
Spotify |
Media player application name |
{{MediaInfo;Lyric}} |
Never gonna give you up |
Current synced lyric line |
🕒 Time — Date, time, and duration utilities
Comprehensive time and date formatting with timezone support.
| Placeholder | Output | Description |
|---|---|---|
{{Time;NowMillis}} |
1700000000000 |
Current time in milliseconds (Unix epoch) |
{{Time;Now;HH:mm}} |
14:30 |
Current time with custom format |
{{Time;Now;yyyy-MM-dd}} |
2023-11-14 |
Current date with custom format |
{{Time;Timezone}} |
America/New_York |
System timezone identifier |
{{Time;UTCOffset}} |
+00:00 |
Current UTC offset |
{{Time;FormatDuration;3600000;Short}} |
1h 0m 0s |
Format milliseconds as duration |
{{Time;ElapsedMillis;...}} |
5000 |
Elapsed time since timestamp |
🔤 Text — Text manipulation and animations
Transform and animate text with various effects.
| Placeholder | Output | Description |
|---|---|---|
{{Text;Upper;hello}} |
HELLO |
Convert to uppercase |
{{Text;Lower;HELLO}} |
hello |
Convert to lowercase |
{{Text;Title;hello world}} |
Hello World |
Convert to title case |
{{Text;Length;hello}} |
5 |
Get text length |
{{Text;Reverse;hello}} |
olleh |
Reverse text |
{{Text;Repeat;3;Hi }} |
Hi Hi Hi |
Repeat text N times |
{{Text;Slice;0;5;Hello World}} |
Hello |
Extract substring |
{{Text;Format;Rounded;text}} |
ⓣⓔⓧⓣ |
Apply special formatting |
{{Text;Truncate;10;Long text...}} |
Long text... |
Truncate with ellipsis |
{{Text;Animate;Marquee;...}} |
scrolling |
Animated marquee effect |
{{Text;Animate;EachOne;A;B;C}} |
A → B → C |
Cycle through items |
🔢 Number — Math operations and random numbers
Mathematical operations and random number generation.
| Placeholder | Output | Description |
|---|---|---|
{{Number;Random;Int;1;100}} |
42 |
Random integer between min and max |
{{Number;Random;Float;0;1}} |
0.7531 |
Random float between min and max |
{{Number;Clamp;150;0;100}} |
100 |
Clamp value between min and max |
{{Number;Map;5;0;10;0;100}} |
50 |
Map value from one range to another |
{{Number;Floor;3.7}} |
3 |
Round down |
{{Number;Ceil;3.2}} |
4 |
Round up |
{{Number;Round;3.5}} |
4 |
Round to nearest integer |
{{Number;Abs;-5}} |
5 |
Absolute value |
🧪 Expression — Logic and math expressions
Evaluate conditions and mathematical expressions.
| Placeholder | Output | Description |
|---|---|---|
{{Expr;5 > 3;Yes;No}} |
Yes |
Conditional evaluation |
{{Expr;Math.sqrt(16)}} |
4 |
Math expressions |
{{Expr;Math.sin(Math.PI/2)}} |
1 |
Trigonometric functions |
{{Expr;[[MediaInfo:Status]]=='Playing';🎵;⏸️}} |
🎵 |
Dynamic conditions |
❤️ Pulsoid — Heart rate monitoring
Display real-time heart rate data from Pulsoid.
| Placeholder | Output | Description |
|---|---|---|
{{Pulsoid;TOKEN;HeartRate}} |
75 |
Current heart rate |
{{Pulsoid;TOKEN;IsOnline}} |
true |
Connection status |
{{Pulsoid;TOKEN;AverageHR;300}} |
72 |
Average HR over N seconds |
{{Pulsoid;TOKEN;MaxHR}} |
120 |
Session maximum heart rate |
{{Pulsoid;TOKEN;MinHR}} |
55 |
Session minimum heart rate |
📡 OSC Data — Read avatar OSC parameters
Access raw OSC parameter values from your avatar.
| Placeholder | Output | Description |
|---|---|---|
{{OSCData;/avatar/parameters/AFK}} |
true |
Read any OSC parameter value |
{{OSCData;/avatar/parameters/VelocityX}} |
0.5 |
Read float parameters |
🎮 OpenVR Trackers — VR tracker information
Monitor your VR trackers' battery and status.
| Placeholder | Output | Description |
|---|---|---|
{{OVRTrackers;BatteryLevel;finder}} |
85 |
Battery level (0-100) |
{{OVRTrackers;IsCharging;finder}} |
true |
Charging status |
{{OVRTrackers;ModelNumber;finder}} |
Vive Tracker 3.0 |
Tracker model |
{{OVRTrackers;SerialNumber;finder}} |
LHR-12345678 |
Serial number |
{{OVRTrackers;IsExists;finder}} |
true |
Check if tracker exists |
Finder can be device index, serial number, device class, or model number.
⚙️ Process — Monitor running processes
Track process information and session times.
| Placeholder | Output | Description |
|---|---|---|
{{Process;IsRunning;VRChat.exe}} |
true |
Check if process is running |
{{Process;StartedAt;VRChat.exe}} |
1700000000000 |
Process start timestamp |
{{Process;SessionTime;VRChat.exe}} |
3600000 |
Time since process started |
⌨️ Hotkey — Keyboard shortcuts
Create interactive hotkey-triggered content.
| Placeholder | Output | Description |
|---|---|---|
{{Hotkey;IsPressed;MyHotkey;1000}} |
true |
Check if pressed within timeout |
{{Hotkey;IsToggled;MyHotkey}} |
false |
Toggle state (press to switch) |
📝 Shortcut — Custom placeholder shortcuts
Define your own reusable placeholder shortcuts.
Create custom shortcuts that expand to complex placeholder combinations. Perfect for frequently used patterns!
Take full control of your avatar's parameters with powerful tools.
| Feature | Description |
|---|---|
| 🔒 Parameter Locking | Lock toggles to prevent accidental changes |
| 🔗 Link & Redirect | Route one parameter's value to another |
| ✨ Animate Parameters | Create breathing effects, color shifts, and more |
Save and restore your avatar's parameter configurations instantly.
| Feature | Description |
|---|---|
| 💾 Save Profiles | Capture outfits, toggles, props, and moods |
| ⚡ Quick Load | Restore any profile with a single click |
| 📤 Export & Import | Share profiles or back them up as JSON |
| 🔍 Search & Filter | Find profiles by name or filter by avatar |
- 🗣️ Speech to Text & Translation — Speak and let your words flow into the chatbox, automatically translated
This project uses Bun, Electron, Svelte 5, and Rust.
# Install dependencies
bun install
# Start development server
bun run dev
# Build for production
bun run build
# Create distributable
bun run packageDistributed under the GPL-3.0 License.
Made with ❤️ for the VRChat Community

