The difference in one sentence
One shows. The other tells.
With a recorder you demonstrate the task and it copies your movements. Six buttons, and that screenshot is the entire program. There is nothing else to learn.
With a script you write down what should happen. Send this key. Click that position. If this window is open, do the other thing. Wait until something appears. Repeat until it stops.
The recorder is faster to start by a wide margin. The script is the only one of the two that can handle a task that is not identical every time.
The line that actually divides them
Ask one question about your task. Does the screen look exactly the same every single time you run it?
If yes, a recorder is the right tool and a script is extra work for no benefit. Same window, same position, same buttons, same order. Record it, save it, done in a minute. The how to use TinyTask guide covers it end to end.
If no, you are going to lose. Not immediately, but eventually and repeatedly. A window opens somewhere new, a dialog appears once, the page loads slower than it did. A recording clicks a coordinate and cannot tell that anything changed, which is what the not working page spends most of its length explaining.
Everything below is detail on that one question.
Where the recorder genuinely wins
Not many places, and they matter more than the list suggests.
Time to first working macro. Under a minute, with nothing learned. A script costs you an evening before it does anything useful.
Nothing to learn at all. No syntax, no documentation, no errors to decode. For someone who will automate one thing this year, that is the whole decision.
Physical replay. A recording reproduces your actual mouse path and timing. A few stubborn applications behave differently for a real-looking movement than for an instant jump. Rare, and real.
Size. One small file, no install, runs from a USB stick.
If your task is one fixed sequence and you want it working before your coffee gets cold, use the recorder. That is not a compromise.
Where the script wins
Everywhere else, and the gap is not close.
It can check things. Is that window open. Did the file appear. Is the button there yet. A recording has no way to ask.
It can wait properly. Not for the number of seconds you happened to pause when recording, but until the thing it is waiting for actually exists. This single feature eliminates most macro failures.
It can repeat with meaning. Until a condition changes, for each item in a list, retrying when something fails.
It survives a moved window. A script can find a window by its title and work with it wherever it is. A recording aims at a spot.
It does more than input. Files, text, the clipboard, running programs, reading and writing data. A recorder only sends clicks and keystrokes.
It can be read six months later. A script says what it does. Open a recording and there is nothing to read, as anyone who has inherited an unlabelled macro discovers.
The learning curve, honestly
Smaller than its reputation, and it is front-loaded in an awkward place.
Most genuinely useful scripts are a few lines. Remap a key. Type a block of text you write ten times a day. Click a button every so often. Those are beginner exercises, and the community has already written most of them, so your first weeks are mostly reading examples and changing values.
The awkward part is that the language has two major generations with different syntax, and examples online are split between them. A beginner following two tutorials can end up with code that cannot run together and errors that make no sense. Pick one generation, stick to it, and check which one any example is written for before you copy it.
That is the real barrier. Not difficulty, confusion.
What they share
More than either camp usually admits.
Both are free. Neither has a paid tier, a trial or a licence to buy.
Both compile to standalone programs. Both produce a file that runs on a machine with nothing installed, and both produce unsigned executables that Windows may question. Ours is covered on the compile to EXE page.
Both are Windows only. Neither has a macOS or Linux version.
Neither can schedule itself. Both rely on Windows for timing, which is on the scheduling page.
Both look like keyloggers to a scanner, because both capture and inject input. That is the category, not the product.
Using both
This is the answer for a lot of people and it rarely gets suggested.
Use the recorder for one-off jobs. Something you need done fifty times this afternoon and never again. Record it, run it, delete it. Writing a script for that is a waste of an evening.
Use scripting for the things you will still be running next year. Anything that has to be reliable, anything that touches something important, anything you would be annoyed to rebuild.
They do not conflict. Both can sit on the same machine and neither cares about the other. A useful habit is to notice when you have recorded the same macro three times, because that is the moment it deserves to be written down properly.
Which to choose, plainly
Choose the recorder if the task is identical every time, you need it working now, and you would rather not learn anything to get it.
Choose the script if the task varies, or if it needs to check or wait for anything. Choose it too if the macro has to keep working for months, or if you are going to automate more than one thing.
Choose something else entirely if you need to find things visually on a changing screen, or if this is a business process rather than a personal shortcut. The alternatives page covers both cases.
Frequently asked questions
For anything that varies, the script, by a large margin. For one fixed sequence you need working in a minute, the recorder. They are different kinds of tool, not competing versions of the same one.
Not natively in the same way. There are recorder tools built on top of it that generate scripts from your actions, and one of them is covered on the alternatives page.
Less than expected. The genuine difficulty is that the language has two generations with different syntax, so online examples conflict. Pick one and check what any example was written for.
Yes. Neither has a paid version, a trial, or a licence to purchase.
Neither is inherently safer. Both send synthetic input, so both look suspicious to behavioural scanners. What matters is where you downloaded the file from.
Yes, and many people should. Record throwaway tasks, script the ones you will still be running next year.
Largely, yes. A script can find a window by its title rather than aiming at a fixed coordinate, which removes the cause described on the not working page. It also has proper hotkey handling, unlike the fixed options covered on the hotkeys page.