Генератор UUID
Создавайте значения UUID v4, v7 и v1 по одному или до 1000 сразу — и вставьте полученный откуда-то UUID, чтобы узнать его версию и время создания. Всё считается в браузере, на сервер ничего не уходит.
v4 случайный
Очищено. Нажмите «Сгенерировать заново» для новой партии.
Разобрать UUID
Вставьте UUID из лога или базы данных. Работают все формы: с дефисами, без них, в фигурных скобках и в виде urn:uuid:.
Какую версию выбрать
UUID — это 128-битный идентификатор, который можно создать без центрального счётчика и без согласования с кем бы то ни было, и он всё равно не повторится. Настоящий вопрос обычно не «что такое UUID», а «какую версию класть в эту колонку». Решают два факта: сортируется ли партия по времени создания и сколько бит в ней действительно случайны.
| Версия | Случайных бит | Сортируется по времени | Когда |
|---|---|---|---|
| v4 — случайный | 122 бит | Нет | Правильный ответ почти на любой вопрос. Только случайные биты, поэтому из него нельзя ничего вычитать. |
| v7 — время Unix | 74 бит | Да | Для первичного ключа в базе. Метка времени идёт первой, поэтому новые строки добавляются в конец индекса; v4 разбрасывает их по индексу и фрагментирует его. |
| v1 — время и узел | 62 бит | Нет | Для взаимодействия со старыми системами. Поле узла изначально содержало MAC-адрес; у браузера доступа к нему нет, поэтому здесь используется случайный узел. |
| Нулевой | 0 бит | Нет | Означает «нет значения». Для колонки NOT NULL, куда нужно что-то положить, и для тестов. |
Никогда не используйте версию с часами (v1, v6, v7) как секретный токен: тот, кто видел одно значение, может сузить круг соседних. Когда нужна неугадываемая ссылка или идентификатор сессии, берите v4 — все её 122 бита случайны.
Часто задаваемые вопросы
Что такое UUID и почему он не повторяется?
UUID — это 128-битный идентификатор. Вся его ценность в том, что для создания не нужен ни центральный счётчик, ни согласование с кем-либо: каждый сервер и каждое устройство делают свои, и они всё равно не сталкиваются. Поэтому их используют в распределённых системах, в мобильных приложениях, работающих офлайн, и в именах файлов.
Для первичного ключа в базе лучше v4 или v7?
v7. Поскольку v4 полностью случаен, каждая новая строка попадает в случайную точку индекса — это фрагментирует его и замедляет запись на большой таблице. В v7 метка времени идёт первой, поэтому значения растут в порядке создания и новые строки добавляются в конец индекса. Плата за это — значение выдаёт время создания; если для вас это проблема, оставайтесь на v4.
Могут ли выйти два одинаковых UUID?
На практике нет. У v4 122 случайных бита, поэтому вероятность коллизии становится осмысленной только после более чем пяти квинтиллионов (5·10^18) значений. Здесь они берутся из криптографического генератора Web Crypto браузера, а не из Math.random(), который для этого никогда не предназначался и вывод которого можно предсказать.
Можно ли использовать UUID как токен или секретную ссылку?
v4 — да, в нём 122 случайных бита из криптографического генератора. v1, v6 и v7 — нет: они начинаются с метки времени, поэтому увидевший одну ссылку может сузить поиск значений, созданных примерно в тот же момент. Для ссылок восстановления пароля и приглашений используйте v4.
Отправляются ли сгенерированные значения на сервер?
Нет. Всё считается в браузере через Web Crypto API — ни сгенерированные значения, ни UUID, который вы вставили для разбора, никуда не отправляются и нигде не сохраняются. Закройте страницу, и от них ничего не останется.