Генератор QR-кода X (Twitter)
100% приватно и локально — ваши данные никогда не покидают браузер. Эти QR-коды постоянны и никогда не истекают.
Настройки: X (Twitter)
Дизайн
Добавить логотип в центр
Изображение читается на этой странице и встраивается в код как data: URL. Оно никуда не загружается и остаётся внутри файла, который вы скачиваете.
Ещё параметры дизайна
Тёмная половина кода. Держите её заметно темнее фона по светлоте.
Закрашивает и свободную зону, и промежутки между модулями. Прозрачный фон исключает его из файла, поэтому им ничего не рисуется.
Контраст 11.5:1 между модулями и фоном.
PNG и WebP сохраняют альфа-канал; в SVG прямоугольник фона просто отсутствует. Светлой половиной контраста становится то, на чём код размещён.
Градиент заливает только тёмные модули. Контраст, который реально получает сканер, задаёт его светлый конец, поэтому оба конца должны оставаться тёмными.
Второй цвет, используется только при выбранном градиенте. Контраст измеряется по нему наравне с первым.
Градусы по часовой стрелке от направления слева направо. Радиальный градиент расходится из центра, поэтому угол действует только для линейного.
Скруглённые формы закрывают меньшую часть каждой ячейки. Центр остаётся закрытым, а именно его считывает декодер, но плотный код в мелкой печати надёжнее читается квадратами.
Кольцо трёх поисковых узоров.
Зрачок внутри каждого поискового узора.
Пустое поле вокруг кода, измеряется в модулях. Стандарт задаёт минимум 4.
Более высокий уровень переносит больше повреждений и стоит ёмкости, поэтому то же содержимое даёт более плотный символ.
В центре стоит логотип, и он удерживает уровень H. Предел его ширины следует за символом: 14% на самом маленьком коде и 30% на плотном.
Предпросмотр и экспорт
Введите имя пользователя, без @.
Экспорт
Растр, для экранов
Заполните форму, чтобы включить скачивание.
Размер экспорта и закодированный текст
- Данные
- Пока не закодировано
- Символ
- Ещё не построен
- Коррекция
- M
Ожидание ввода
Закодируйте профиль X или используйте веб-интент, чтобы открыть экран нового поста с уже заполненным текстом. Вариант с готовым текстом сам ничего не публикует: он только создаёт черновик, а публиковать или нет, решает тот, кто сканирует.
Когда его сканируют
Код профиля открывает страницу профиля, а код с готовым текстом открывает в X экран нового поста с вашим текстом в поле, готовым к правке или публикации.
Ссылка на профиль и готовый пост — это разные полезные нагрузки
Вариант с профилем кодирует адрес профиля и больше ничего. Вариант с готовым текстом кодирует URL веб-интента, который X публикует ровно для этого, — /intent/tweet с вашим текстом в параметре text, — и он открывает экран нового поста с уже заполненным полем.
twitter.com и x.com ведут на одну и ту же платформу, и ссылки, написанные под любой из этих доменов, попадают на один и тот же профиль и на один и тот же экран нового поста. Сам путь интента по-прежнему документированный /intent/tweet, поэтому именно он лежит в коде, а не угаданный вариант пути после ребрендинга.
Закодированный текст длиннее того, что вы набрали
Всё в параметре text должно пережить пребывание внутри URL, поэтому оно кодируется процентами. Это раздувает полезную нагрузку далеко за пределы того счётчика символов, который вы видите в поле, и символ растёт вместе с ней:
Практическое следствие: пост, который вы считаете коротким, может дать код, слишком плотный для печати размером с наклейку. Пишите готовый текст так, будто бюджет символов — треть того, что разрешает X, проверяйте размер символа в предпросмотре и режьте слова, а не понижайте уровень коррекции ошибок.
- Пробел превращается в %20 — три символа вместо одного
- Перевод строки превращается в %0A, а разрыв абзаца — в %0A%0A
- Решётка превращается в %23; оставленная сырой, она оборвала бы URL раньше времени и отрезала всё, что после неё
- Амперсанд превращается в %26, иначе он начинает новый параметр запроса
- Один эмодзи после кодирования может превратиться в двенадцать символов — поэтому здесь они дороги
Что видит сканирующий до того, как что-либо опубликовано
Экран нового поста показывает ваш текст в редактируемом поле. Человек может его изменить, удалить или закрыть экран, и до нажатия кнопки публикации в его ленту ничего не попадает. Это не ограничение, которое нужно обходить: именно поэтому ссылку-интент вообще разумно печатать.
Это же задаёт планку хорошего использования. Табличка на конференции, которая подставляет хештег мероприятия и оставляет мнение пустым, уважает читателя. Код, который заранее пишет похвалу от первого лица в надежде, что её отправят не читая, — нет, и в поле ввода это всё равно видно. Пишите такой черновик, который вам было бы не стыдно услышать вслух от сканирующего человека.
Одно условие стоит напечатать рядом с кодом: экрану нового поста нужно, чтобы читатель был авторизован в X. Человек без аккаунта упирается в стену входа, поэтому готовый пост — плохой выбор для широкой публики и приемлемый там, где аудитория уже на платформе.
Вопросы и ответы
Публикует ли пост само сканирование?
Нет. Ссылка-интент открывает экран нового поста в X с предзаполненным текстом и на этом останавливается. Сканирующий читает текст, при желании правит его и нажимает «Опубликовать» — либо закрывает экран, и ничего не происходит. Никакая ссылка не может опубликовать что-либо от чужого имени без действия самого человека.
Какой домен использовать для профиля — x.com или twitter.com?
Любой ведёт на один и тот же профиль; адреса twitter.com переадресуются на x.com. Введите имя пользователя без @, и инструмент соберёт единообразный адрес, поэтому код будет одной и той же длины, о каком бы домене вы ни думали.
Какой длины может быть готовый текст?
X сам ограничивает экран нового поста — 280 символов для обычного аккаунта, — и поле здесь останавливается на этой границе. На практике более тесное ограничение — размер символа: процентное кодирование может удвоить полезную нагрузку, поэтому код, предназначенный для мелкой печати, должен нести намного меньше максимума.
Можно ли включить в готовый текст хештеги и ссылку?
Да. И то и другое кодируется перед попаданием в URL, поэтому решётка превращается в %23, а двоеточие и косые черты в ссылке тоже экранируются. Именно поэтому сырая решётка, вставленная в собранный вручную URL интента, обрывает его: браузер читает её как маркер фрагмента. Набранная в поле здесь, она экранируется за вас.
Как работает статический QR-код
Каждый код на этом сайте статический: данные записаны в сами чёрно-белые модули. При чтении кода ничего не запрашивается, ни один наш сервер в этом не участвует и никакая подписка не держит напечатанный код на плаву. То же свойство и есть ограничение: после печати изменить его содержимое нельзя.
Дальше то, прочитается ли напечатанный код, решают три вещи: во сколько байт вышли данные, какой уровень коррекции поглощает повреждения и какой ширины получается один модуль на бумаге. Эти руководства разбирают каждую из них с цифрами.