AutoHotkey
Scriptable hotkeys with a typed API, editor, AI edits, and safer sharing.
Automate the work you repeat on Windows, from quick shortcuts to full workflows, all organized across your apps and PCs.
Record a sequence, bind shortcuts by app, or script the parts that need decisions.
PowerKeys brings macros, keybinds, scripts, profiles, device triggers, marketplace installs, and sync into the same app.
Scriptable hotkeys with a typed API, editor, AI edits, and safer sharing.
Assign every extra mouse, keyboard, pedal, and macro-pad button inside the same profiles.
Per-app shortcut layers plus macros and scripts when key swaps are not enough.
Trigger the same automations from buttons, hotkeys, mouse inputs, and scripts.
Keep the workflows. Replace the scattered setup.
Macros, keybinds, scripts, marketplace installs, and sync stay free. Premium adds a reviewable AI editor that reads your script, selection, and logs, then proposes patches you approve.
1 // Paste clipboard as uppercase text2 Hotkey.Register("Ctrl+Alt+U", async () => {3 const text = Clipboard.Text.trim();4 Keyboard.Type(text.toUpperCase());5 });
Profiles, bindings, and script data stay with your account across PCs.
Move from desktop to laptop without rebuilding shortcuts, profiles, or script state.
Shared packs are transparent before anything runs.
Browse shared scripts, profiles, and hotkey packs you can inspect, install, and adapt instead of starting from a blank file.
Write the workflow logic. PowerKeys handles typed APIs, permissions, settings UI, logs, and AI-assisted edits.
^!f::{
; 1. Create a Windows COM HTTP client
whr := ComObject("Msxml2.XMLHTTP.6.0")
; 2. Retry by hand
Loop 3 {
try {
whr.open("GET", url, false)
whr.send()
if (whr.status = 200) {
body := whr.responseText
; 3. Pull titles from JSON text
Loop 3
if RegExMatch(body, '"title":"([^"]+)"', &m, pos)
results .= m[1] . "`n", pos := m.Pos + m.Len
break
}
} catch
Sleep 500 * A_Index
}
; 4. Show the result
TrayTip("Feed", results)
} Hotkey.Register("Ctrl+Alt+F", async () => {
const feed = await HTTP.GetJson(url, {
retries: 3,
});
const titles = feed.items
.slice(0, 3)
.map(i => i.title)
.join("\n");
UI.Notify("Feed", titles);
}); Build scripts that feel like product features, not loose files on a desktop.
Start free with macros, keybinds, scripts, marketplace installs, and sync. Upgrade only when you want an AI editor that understands your current script and prepares patches you approve.
Describe what you want inside the editor. The agent reads your script, selection, logs, and runtime state, then shows a patch before anything changes.
Windows 10 and 11 · Signed installer
Get release notes and early feature previews.