The most practical device: the stronger player gets less time. Three minutes against ten, say, or five against fifteen.
Working proportions: for a club player against a casual one, roughly 2:1 on time; for an adult against an eight-year-old, 3:1. Beyond that it is trial and error - if the stronger player still wins easily, widen the gap.
The classic method: the stronger player removes one of their own pieces. In ascending order:
The side effect that makes material odds poor at company events: they underline the inequality in public. An adult does not enjoy being given odds in front of colleagues - better arranged privately and without announcement.
Worth mentioning separately: Chess960, where a randomized starting position devalues opening knowledge. Formally it is not a handicap, but it noticeably narrows the gap between somebody currently coached and somebody who simply plays - and it humiliates nobody.
The most respectful way to level a field is not to change the game at all, but to change how it is scored.
For company and open events this is the better route: nobody feels like the person who was given a discount - a field with unrated players.
parent against child: three minutes against ten, and the game becomes real
public odds embarrass adults; categories solve the same problem without awkwardness
children take odds calmly, and a coach can use them as a teaching device
levels without announcing any handicap and freshens a familiar game
the system sorts the field and the category gives them their own contest
standard practice: the exhibitor has a total time for every game
Any handicap must be described in advance and applied identically to everybody - otherwise it becomes the organizer deciding by feel, which is the worst option available.
The tournament is played with time odds. Players are divided into two groups by playing strength on the basis of the information given at registration. In a game between players of different groups the time control is 5 minutes for group A and 12 minutes for group B, with a 3-second increment for both. In games within the same group the control is identical for both players: 10 minutes with a 3-second increment.
Note the last sentence: without it, nobody knows what happens when two equals meet. The structure of the document - playing conditions.
A technical caveat: digital clocks and timers can set different controls within one game, but not all tournament software supports it. In the Vibe Chess app the control is set once for the whole event, so a time handicap is configured by hand on the clocks while the record-keeping stays normal.
Time odds: the stronger player gets less time, say 5 minutes against 15. It is set on the clock in seconds, needs no explanation and leaves the position on the board intact.
A pawn is minimal; pawn and move slightly more; a knight is worth roughly one grade of strength; a rook applies between genuinely different levels of training; a queen belongs between a master and a complete beginner.
Poorly: public odds underline the inequality and embarrass adult participants. Separate prize categories solve the same problem without the awkwardness.
With a beginners' category, rating bands, a prize for the best performance relative to rating, or simply a Swiss - by round two it has already sorted players by level.
Partly: a randomized starting position devalues opening knowledge and narrows the gap between somebody currently coached and somebody who plays occasionally. It is not formally a handicap, but it works and offends nobody.
Everything people usually keep in a spreadsheet is already in the app: pairings, points, tie-breaks, round order. Free, with no subscriptions and no cap on the number of players.
The bot is constantly improved based on real tournaments. If you need a feature that isn't there yet, message the developers right inside the bot with the /support command. Many features appeared exactly because organizers asked for them, and useful ideas get added quickly.
Mixed fields - beginners, family tournaments. Measuring strength - performance rating.