A Windows desktop application that lets you control your VRChat avatar's size in real time. Set an exact height, use quick presets, adjust with keyboard shortcuts, and have your scale restored automatically whenever you switch avatars or enter a new world β all without touching the in-game menus.
This application was made entirely with Claude. I cannot speak entirely to its stability, but I have dogfooded and iterated on it enough that it has been stable for my use.
VRChat lets external tools change your avatar's size by sending a simple network message (OSC). This app provides a friendly interface for that β a slider, preset buttons, exact value entry, and keyboard shortcuts β so you can dial in your exact height without navigating menus.
It also watches for avatar and world changes and can instantly restore your preferred scale after each one, effectively keeping your preferred height across avatars.
- Requirements
- Installation
- Enabling OSC in VRChat
- Features
- Keyboard shortcuts
- Height overlay
- Settings reference
- Files included
- Troubleshooting
- OSC technical reference
- To-Do List
| Requirement | Details |
|---|---|
| Windows 10 or 11 | Required for the system tray and overlay features |
| Python 3.10 or newer | Free download from python.org |
| VRChat (PC version) | OSC must be enabled in-game β see below |
| Git (optional) | Required for Install.bat to install OSCQuery support. Free download from git-scm.com |
Don't have Python? The installer will detect this and offer to open the Python download page for you.
This is the easiest way, especially if you are not familiar with the command line.
- Download and unzip
vrchat_avatar_scaler.zipsomewhere convenient (e.g. your Documents folder). - Double-click
Install.bat. - Follow the prompts. The installer will:
- Check that Python is installed and up to date
- Install all required packages automatically
- Install OSCQuery support if Git is available (see Requirements)
- Create a shortcut on your desktop
- When it finishes, press Y to launch immediately.
That's all. Move on to Enabling OSC in VRChat.
Use this if the installer fails, or if you prefer to do things yourself.
Step 1 β Download Avatar Scaler
Download and unzip vrchat_avatar_scaler.zip somewhere convenient (e.g. your Documents folder).
Step 2 β Install Python
Go to python.org/downloads and download the latest Python 3 release.
β οΈ Important: On the first screen of the Python installer, tick the checkbox that says "Add Python to PATH" before clicking Install Now. If you miss this, the app will not be able to find Python.
Step 3 β Install required packages
Open Command Prompt or PowerShell (press Win + R, type cmd, press Enter) and paste:
pip install python-osc pystray Pillow psutil
Then for optional keyboard shortcut support (recommended):
pip install pynput
Then for optional OSCQuery support (recommended β requires Git to be installed):
pip install "git+https://github.com/cyberkitsune/tinyoscquery.git" zeroconf requests
Step 4 β Launch the app
Double-click Launch Scaler (Silent).vbs to start without a console window appearing.
OSC is the feature that lets external tools like this one talk to VRChat.
How to enable OSC
- Open the Action Menu.
- Go to Options β OSC β Enabled.
The main control is a horizontal slider that covers VRChat's full supported range β 0.1 m to 100 m β using a logarithmic scale. This means small heights (like 0.2 m) are just as easy to fine-tune as large ones (like 50 m). The slider gets more precise as you make the window wider.
Tick marks are drawn below the slider at key heights (0.1 m, 0.5 m, 1 m, 2 m, 5 m, 10 m, 50 m, 100 m and more) so you can see at a glance where you are.
If the current world has set height limits via Udon scripting, red markers appear on the slider showing the allowed range, and the zones outside those limits are shaded. If the world has fully disabled scaling, the slider fades out and is blocked until you leave.
To go beyond VRChat's supported range, you'll need to manually input your desired height in the text field below the slider or adjust with the (%) buttons. The absolute limits are 0.01 m to 10,000 m.
If you go beyond VRChat's supported range of 0.1 m - 100 m, you'll be met with a caution message.
β οΈ Do NOT submit bug reports or contact VRChat Support if issues are encountered while operating outside of the supported range.
Type any height in metres in the text field and press Enter (or click Send βΆ) to apply it instantly.
Six buttons let you nudge your scale relative to your current height:
| Button | Effect |
|---|---|
| β50% | Half your current height |
| β10% | Slightly shorter |
| β1% | Fine reduction |
| +1% | Fine increase |
| +10% | Slightly taller |
| +50% | One and a half times current |
Eight preset buttons cover the most common sizes:
| Preset | Eye height |
|---|---|
| Tiny | 0.30 m |
| Small | 0.90 m |
| Compact | 1.20 m |
| Short | 1.52 m |
| Average | 1.65 m |
| Tall | 1.80 m |
| Giant | 3.00 m |
| Macro | 10.0 m |
Your default height is a saved value you can return to at any time.
- βΊ Default β instantly snaps back to your default height and sends it to VRChat.
- β Set Default β saves whatever height is currently active as your new default.
- You can also type an exact value in Settings, or use the Use Current Height button there.
Every time you switch avatar, VRChat changes scale to match the avatar's author set scale or last-saved scale. The scaler can respond automatically the moment this happens:
| Mode | What happens |
|---|---|
| Retain active height | Your current height is re-sent immediately. You should not notice any change. |
| Apply default height | Your configured height is sent instead. Useful for having a "home" size. |
| Neither selected | VRChat's default behaviour is left as-is. |
Configure this in Settings β On Avatar / World Change.
With the pynput package installed, you can adjust your scale from anywhere β even when the scaler window is hidden to the tray β using keyboard shortcuts.
See Keyboard shortcuts below for the full list and instructions on changing them.
With the tinyoscquery package installed, the scaler advertises itself on the local network using mDNS. VRChat detects it automatically and sends OSC messages to it without any fixed port configuration needed. This prevents conflicts with other OSC applications that may be listening on the same ports. When OSCQuery is active, VRChat will show a HUD notification that it has found the scaler. OSCQuery can be toggled in Settings β Network.
A small floating display that shows your current eye height on screen. See Height overlay below.
The scaler watches for the VRChat process in the background. The coloured dot in the top-left of the window shows the current status:
- π’ Running β VRChat is open and OSC is ready.
- π΄ Not running β VRChat is not detected.
You can configure the scaler to automatically show its window when VRChat launches (Auto-launch) and close itself when VRChat exits (Auto-close) in Settings.
Closing the main window does not exit the scaler β it hides to the system tray in the bottom-right of your taskbar. Right-click the tray icon for a menu:
- Show / Hide β toggle the main window (also the default double-click action)
- Apply Default Height β send your default height without opening the window
- Toggle Overlay β show or hide the height overlay
- Quit β exit the application completely
In Settings β Lifecycle, tick Run on Windows startup to have the scaler launch automatically when you log in. Pair this with Start minimized to tray and the scaler will sit silently in the background until you need it.
Requires the pynput package (installed automatically by Install.bat).
| Action | Shortcut |
|---|---|
| Scale up +1% | Ctrl + Alt + β |
| Scale down β1% | Ctrl + Alt + β |
| Scale up +10% | Ctrl + Alt + Shift + β |
| Scale down β10% | Ctrl + Alt + Shift + β |
| Apply default height | Ctrl + Alt + Home |
Holding a scale shortcut scales continuously β it fires immediately, pauses briefly, then repeats rapidly until you let go. This lets you make both fine adjustments and large sweeping changes with the same key.
- Open β Settings β Controls.
- Click Change next to the action you want to rebind.
- The button changes to show Press keysβ¦ β hold your desired modifier keys (Ctrl, Alt, Shift) and then press the trigger key.
- The label updates immediately to show the new binding.
- Click Reset next to any action to restore its factory default.
- Click Save Settings to apply.
The overlay is a small always-on-top display that shows your current eye height in metres and feet/inches. It is designed to be glanceable while you are in VRChat without getting in the way.
Click π Overlay in the top-right of the main window, or right-click the tray icon and choose Toggle Overlay. The button turns bright when the overlay is active. Click or toggle again to turn it off.
The overlay only appears when VRChat is the active (focused) window. It hides automatically when you switch to anything else β a browser, Discord, your desktop, etc. β and reappears when you bring VRChat back to the front.
Click and drag anywhere on the overlay to move it. Its position is saved automatically and remembered between sessions. By default it appears in the top-right corner of your screen.
Click the small β in the corner of the overlay, use the π Overlay button in the main window, or use the tray menu.
Open Settings with the β Settings button in the top-right corner of the main window. Hover over any label or checkbox to read a description of what it does.
| Setting | Description |
|---|---|
| Default height value | The eye height (in metres) used by βΊ Default and on automatic re-apply. |
| Use Current Height | Captures whatever height is active right now as the new default. |
| Setting | Description |
|---|---|
| Retain active height | Re-sends your current height instantly after each avatar or world change. |
| Apply default height | Sends your default height instead after each change. |
Only one of these can be active at a time. If neither is enabled, VRChat's scale reset is left as-is.
| Setting | Description |
|---|---|
| Run on Windows startup | Creates a startup shortcut so the scaler launches when you log in. Unticking removes the shortcut. |
| Auto-launch when VRChat starts | Brings the scaler window to the front automatically when VRChat is detected. |
| Auto-close when VRChat exits | Exits the scaler 1.5 seconds after VRChat closes. |
| Start minimized to tray | Hides the window on launch; access via the tray icon. |
| Setting | Description |
|---|---|
| Suppress out-of-range warning | Disables the warning shown when you select a height outside 0.1β100 m. |
Configure whether keyboard shortcuts are enabled and change the key bindings for each action. See Keyboard shortcuts for details.
| Setting | Default | Description |
|---|---|---|
| Use OSCQuery | Enabled | Advertises the scaler via mDNS so VRChat finds it automatically using any available ports. Requires the tinyoscquery package. Falls back to fixed ports below if unavailable or disabled. |
| VRChat IP | 127.0.0.1 | IP address of the machine running VRChat. Leave as-is if VRChat is on the same PC. |
| Send port | 9000 | Fallback port the scaler sends OSC messages to when OSCQuery is disabled. |
| Recv port | 9001 | Fallback port the scaler listens on when OSCQuery is disabled. |
Settings are saved to scaler_config.json in the same folder as the script. You can delete this file to reset everything to defaults.
| File | Purpose |
|---|---|
vrchat_avatar_scaler.pyw |
The main application. |
Install.bat |
One-click installer β run this first. |
Launch Scaler (Silent).vbs |
Launches the app without a console window. Use this for daily use and shortcuts. |
scaler_config.json |
Created automatically on first run. Stores all settings and your last-used height. Delete to reset to defaults. |
- Make sure OSC is enabled: Action Menu β Options β OSC β Enabled.
- Check the status dot in the top-left of the scaler window β it should be green.
- Make sure no firewall is blocking local UDP traffic on port 9000.
- Check that nothing else is already using port 9000 (another OSC app, for example).
Enable Retain active height in Settings β On Avatar / World Change. The scaler listens for the message VRChat sends on every avatar switch and world transition and re-sends your height immediately.
Something else on your PC is already using port 9001. The best fix is to enable OSCQuery in Settings β Network β it will pick a free port automatically. Alternatively, change the Recv port to a different number (e.g. 9002).
- Open Settings β Controls and confirm Enable keyboard shortcuts is ticked.
- Make sure
pynputis installed. RunInstall.batagain to check. - If it still does not work, open Command Prompt and run:
pip install --upgrade pynput
This should not occur in the current version, which identifies VRChat by process name rather than window title. If you do experience this, please open an issue on GitHub with details about which application was focused.
VRChat communicates via UDP using the OSC protocol. When OSCQuery is active, ports are negotiated automatically. When OSCQuery is disabled, the scaler sends to port 9000 and receives on port 9001 by default.
| OSC Address | Type | Direction | Description |
|---|---|---|---|
/avatar/eyeheight |
float |
Send & receive | Eye height in metres. Officially supported range: 0.1β100 m. Absolute limits: 0.01β10,000 m. |
/avatar/eyeheightmin |
float |
Receive only | Minimum height permitted by the current world (Udon). VRChat broadcasts 0.2 m when no world limit is set. |
/avatar/eyeheightmax |
float |
Receive only | Maximum height permitted by the current world (Udon). VRChat broadcasts 5.0 m when no world limit is set. |
/avatar/eyeheightscalingallowed |
bool |
Receive only | false when the current world has fully disabled avatar scaling. |
/avatar/change |
string |
Receive only | Broadcast by VRChat on every avatar switch and world transition. |
- Integrate SteamVR Input to control avatar height with VR controller inputs.
- Possibly integrate per-world ID scale saving.