Regras que nunca são quebradas
Adicione uma regra para cada dupla que não pode cair junta. Nunca forma par com vale nos dois sentidos e serve para casais, irmãos ou quem mora na mesma casa. Não tira vale num sentido só, o que ajuda a evitar repetir o par do ano passado: se a Ana tirou o Pedro no último amigo secreto, adicione Ana não tira Pedro. A opção Duas pessoas nunca se tiram mutuamente evita a troca direta, em que a Ana dá presente para o Pedro e o Pedro para a Ana.
Antes de sortear, o sistema confere se as suas regras ainda permitem algum resultado. Se não permitirem, por exemplo porque uma pessoa foi excluída de todo mundo, ele mostra qual nome causa o problema, em vez de tentar para sempre ou ignorar uma regra sem avisar.
Um sorteio justo
O sorteio usa o gerador de números aleatórios seguro do seu navegador e escolhe um resultado entre todos os válidos, com a mesma chance para cada um. Ele embaralha a lista inteira e só aceita o resultado se todas as regras forem cumpridas, igual a tirar papeizinhos de um saquinho e recomeçar quando alguém pega o próprio nome. Com regras muito rígidas, em que isso demoraria demais, ele passa para uma busca passo a passo cuidadosa, que também nunca quebra uma regra.
Duas formas de revelar
Passar o celular funciona melhor numa festa ou no escritório: cada pessoa toca no próprio nome, confere se ninguém está olhando, clica em Mostrar e esconde o resultado antes de passar o celular adiante. Os nomes que já foram vistos ficam marcados, então você sabe quem ainda falta.
Os links individuais são ideais para grupos que não estão no mesmo lugar, como a família espalhada em outras cidades ou o grupo do WhatsApp. Cada link abre uma página com um cumprimento para aquela pessoa e o resultado atrás do botão Mostrar. O nome vai criptografado dentro do link, então não dá para lê-lo no texto do link, e ele nunca chega a um servidor. Mas atenção: quem abrir um link vê o que tem dentro, inclusive você, que está organizando. Se quiser manter a surpresa, envie os links sem abrir, ou peça para alguém que não está participando enviar.