The complete Reflex guide
Everything you need to build macros — from drag-and-drop steps to full Lua scripts, remaps, camera turns and more. Use the search or the menu to jump around.
Install & activate
Reflex is a single small app for Windows 10 and 11 — nothing else to install.
- Buy Reflex ($8, one-time). Your license key is shown right after checkout and emailed to you.
- Download Reflex and run it. The first time you open it, you'll be asked for your license key — paste it in and click Activate.
- Accept the license agreement, and you're in.
Sign in with your account
You don't need an account to use Reflex, but it's handy. Create one at reflexmacros.com/dashboard to view your key, reset your PC, download the latest version, and connect Discord for the customer role.
Two ways to link the app and your account:
- Key in the dashboard first: in Reflex click Sign in with your Reflex account on the activation screen. Your browser opens, you click Connect, and Reflex activates — no typing.
- Key typed in the app first: use the ••• menu → Connect to Reflex account, then Connect in the browser. Your key then shows up in the dashboard.
The window at a glance
Macro list (left)
All your macros and folders. Drag to reorder, or into a folder. Click one to edit it.
Editor (middle)
The selected macro's steps — or its script. Toggle between Steps and Script at the top.
Settings (right)
The keybind, playback mode, and which app the macro is allowed to run in.
Top bar
The master Macros switch, update notices, and Stop all.
%APPDATA%\Reflex. Your macros carry across updates.Keybinds
Every macro has a trigger. Click the keybind box on the right, then press the key, combo, or mouse button you want — including side buttons (Mouse 4/Mouse 5) and the scroll wheel.
- Block the key — stops the trigger from also reaching the game (so a bound key only runs your macro).
- Click the small ✕ on a keybind to clear it back to none.
Playback modes
How the macro plays when you press its key:
| Mode | What it does |
|---|---|
| Once | Runs through one time per press. |
| Repeat | Runs a set number of times per press. |
| Toggle | Press once to start looping, press again to stop. Great for auto clickers and holds. |
| Hold | Loops only while you hold the key down; stops when you let go. |
sleep().Enable & disable
Each macro has an Enabled switch — turn one off to keep it without it responding to its key. The master Macros switch in the top bar disables everything at once. Stop all halts anything currently running and releases held keys.
Step types
Click Add step to build a macro visually. Steps run top to bottom. Drag the grip to reorder, and use the chevron on a step to change its type.
Keyboard
- Keystroke — press and release a key. Set a hold time (many games need a few ms to register).
- Key down / Key up — hold a key until a later Key up (or Stop all / the kill switch).
- Type text — types a string as real key presses, with a gap between characters.
Mouse
- Click — press and release a button (left, right, middle, Mouse 4/5), with a hold time.
- Button down / Button up — hold a mouse button.
- Move to — jump the cursor to a screen position. Use Pick to capture your cursor's spot.
- Move by — nudge the cursor by an offset in pixels.
- Turn — turn the game camera by degrees (see Turn).
- Scroll — turn the wheel a number of notches (+ up, − down), with a Horizontal option.
While running
- Remap / Block — change or disable a key only while the macro runs (see Remap & block).
Timing
- Delay — wait a fixed time. Random delay waits a random time in a range.
Timing & randomness
All times are in milliseconds (1000 ms = 1 second). Clicks, keystrokes and typing have a hold value (how long the button stays down) and a Random chip — turn it on to pick a fresh random value in a range on every press, which looks more human and less robotic.
Recording
Click Record to capture keystrokes and clicks as steps in real time. Optionally record mouse movement too. Press Record again to stop. You can edit, reorder or delete any captured step afterwards.
Folders & order
Make a folder from the new-folder button above the macro list, then drag macros into it to group them (for example per game). Drag macros and folders to reorder — the order in the list is just for you, it doesn't affect how macros run.
Writing a script
For anything beyond a straight list of steps — loops, conditions, randomness, reacting to input — switch a macro to Script and write Lua. The script runs once per playback (and repeats in Toggle/Hold modes). Times are in milliseconds, and Ctrl + Shift + F12 stops everything instantly.
-- Fire in 3-round bursts while the key is held (Hold mode) for i = 1, 3 do click() sleep(60, 90) -- random gap, feels human end sleep(250) -- wait before the next burst
The editor checks your script for errors as you type, and the Output panel shows anything you print() plus any errors with line numbers. The sandbox has no file, network or OS access — only the functions below.
Steps ⇄ Script
The Steps / Script toggle at the top of the editor converts between the two:
- Steps → Script turns your steps into the matching script, so you can learn the code or extend it.
- Script → Steps converts a simple, linear script back into steps. A script that uses loops, conditions or variables can't be shown as steps, so Reflex keeps it as a script and tells you why.
A simple reload macro, built from steps:
- Keystroke R
- Delay 1500 ms
- Keystroke 1
press("r") sleep(1500) press("1")
API reference
Every function available in a script. Arguments in [brackets] are optional. Times are milliseconds.
Tap a key (press and release). hold is how long it's held (default 15 ms). Two values pick a random hold between them. press("e"), press("space", 20, 45).
Hold a key down, then release it later. A held key stays down until up(), Stop all, or the kill switch.
Press a key combination, e.g. combo("ctrl+shift+s"). Modifiers are held while the last key is tapped.
Type text as real key presses on your keyboard layout. gap is the pause between characters (default 30 ms). type("gg wp\n").
Click a mouse button. Default "left"; also "right", "middle", "x1", "x2".
Hold a mouse button down, then release it.
Move the cursor to a screen position in pixels (0, 0 is the top-left of your main monitor).
Move the cursor by an offset. Good for raw-input games that read relative motion.
Turn the game camera by degrees. Negative = left / down. ms spreads the turn over time (0 = instant). full = mouse counts for a 360° turn (default 16364). See Turn.
Scroll the wheel n notches. Positive = up / right, negative = down / left.
Wait. With two values, waits a random time in that range. sleep(100), sleep(50, 120).
Returns a random whole number between a and b (inclusive). move_by(random(-3, 3), 0).
A number, not a function: the current playback pass, starting at 1. Useful in Toggle/Hold loops.
These keep working until the macro stops, so use them with Toggle or Hold, or end the script with idle().
While the macro runs, your physical from key acts as to. remap("leftclick", "rightclick").
Disable a key while the macro runs. block("q").
Cancel a remap or block on a key.
Keep the macro alive (doing nothing) so remaps and blocks stay active until you press the key again. A macro made only of remaps uses no CPU.
Returns true while a key or mouse button is physically held right now. if is_down("shift") then ... end.
Returns true once for each new physical press — great for reacting to a click without repeating.
Returns the cursor's x, y. local x, y = cursor().
Write a line to the Output panel. Handy for checking what your script is doing.
Keys & buttons
Key names are not case-sensitive. Pass them as strings.
| Group | Names you can use |
|---|---|
| Letters / digits | "a" … "z", "0" … "9" |
| Function keys | "f1" … "f24" |
| Modifiers | "ctrl", "shift", "alt", "win" (and "lctrl", "rshift", "ralt"/"altgr" …) |
| Editing / nav | "enter", "esc", "space", "tab", "backspace", "delete", "ins", "home", "end", "pgup", "pgdn", "caps" |
| Arrows | "arrowup", "arrowdown", "arrowleft", "arrowright" |
| Symbols | "-", "=", ",", ".", ";", "/", "[", "]", "\\", "'", "`" |
| Mouse (for click / mouse_down) | "left", "right", "middle", "x1", "x2" |
| Mouse (for remap / is_down / pressed) | "leftclick", "rightclick", "middle", "x1", "x2" |
press(), down(), up() and is_down(), the names "left"/"right" mean the arrow keys. For the mouse buttons there, use "leftclick"/"rightclick".Examples
Auto clicker (Toggle)
click() sleep(50, 110) -- ~9-20 clicks/sec, randomised
Left click acts as right click (Toggle)
remap("leftclick", "rightclick") idle() -- keep it active until you toggle off
Only act while holding Shift
if is_down("shift") then press("e", 20, 45) sleep(120) end
Quick 180° spin (CS2-style sensitivity)
-- degrees, over 120 ms; calibrate "full" with Test 360° in the Turn step turn(180, 0, 120, 16364)
Remap & block
A remap makes one key act as another, and a block disables a key — but only while the macro that owns it is running. So put remaps on a Toggle macro (press the keybind to switch them on and off) or a Hold macro. A macro made only of remap/block steps stays active without using CPU.
- Swap mouse buttons, or map a side button to a key.
- Disable the Windows key while gaming.
- Turn one key into a combo by remapping, or block a key you keep hitting by accident.
Turn (game camera)
The Turn step (and turn() in scripts) rotates the in-game camera by a number of degrees — sideways (left/right, 0–360°) and up/down (0–90°) — either instantly or smoothly over a set time.
Right on the step you set the yaw, the pitch and a duration in milliseconds — how long the whole turn takes. Leave it at 0 to snap instantly, or raise it (e.g. 300 ms) for a smooth sweep. The same value is also under Speed in the Aim popup.
Aiming
Open Aim on a Turn step for a preview of the whole view around you, with your monitor in the middle. Drag the dot to aim; hold Shift to snap to 15° steps.
Calibrating for your game
How far a turn moves depends on your game and sensitivity, so set it once:
- Pick your game and type your in-game sensitivity, then Apply — or
- Click Test 360°: it waits 5 seconds so you can switch to the game, then turns once around. Overshot? Lower the number. Stopped short? Raise it.
- Use for all Turn steps copies your calibrated number everywhere.
Window targeting
Under Active in (right panel) you can limit a macro to one app, so it never fires on your desktop or in the wrong game:
- Any app — the keybind works everywhere (default).
- Process — only when a given program is in focus, e.g.
mygame.exe. - Window title — only when the focused window's title matches.
Premade macros & share codes
Open Premade Macros for ready-made macros — auto clicker, sprint lock, rapid fire, screenshot, keep-PC-awake and more. Add one, give it a keybind, done. Some are steps, some are scripts (and you can switch a simple script to steps to see how it works).
Share codes
Send a macro to a friend with Copy share code — they paste it into Add from share code and get an exact copy. Codes start with REFLEX-.
Dashboard
At reflexmacros.com/dashboard you can:
- View and copy your license key (click the 👁 eye button), and see its status.
- Reset your PC (HWID) yourself when you switch computers — once every 30 days.
- Download the latest version of Reflex.
- Connect Discord to get the customer role in the server automatically.
- Leave a review, change your password, or sign out everywhere.
Updating
Reflex updates itself. When a new version is out, you'll see a New update ready notice with Relaunch Now or Install on Quit — your macros carry over either way. You can always grab the latest from the dashboard too.
Safety & fair play
- Many online games prohibit macros or automation. It's your responsibility to check and follow each game's rules — using Reflex against them can get you banned, and that's on you, not us.
- Limit risky macros to the right game with window targeting so they can't fire elsewhere.
- See the Terms and Privacy Policy for the full details.
Troubleshooting
My macro doesn't do anything in a game
If the game runs as administrator, run Reflex as administrator too (right-click → Run as administrator). Also check the macro is Enabled, the master Macros switch is on, and your window targeting matches the game.
The key triggers the game as well as my macro
Turn on Block the key on the keybind so the trigger doesn't pass through.
Turns go too far or not far enough
Recalibrate the Turn step with Test 360° for your game and sensitivity.
It asks for my key again after a reinstall or new PC
That's expected — a new Windows install or PC is a new machine. Reset your PC in the dashboard, then enter your key again.
Still stuck?
Open a ticket in the Reflex Discord — we'll help you out.