Вспомните штрих-коды, там толщина линии обозначает конкретную цифру. В qr коде используется похожий принцип, картинка расчерчена на маленькие квадратики, при расшифровке каждый квадратик чёрный/белый обозначает ноль или единицу, а двоичным кодом, как известно, можно закодировать любую информацию. Важно еще понимать, что qr коды бывают разных размеров, на разное количество байт. Большие квадраты в углах qr кода служат для точного определения границ. И центр чаще всего выкидывается из расшифровки, там можно разместить логотип компании или что-то ещё, он просто не анализируется.
На Фанфиксе для создания qr кодов используется js библиотека, я просто нашел ее в сети, сайт скармливает библиотеке ссылку на фанфик, в ответ выдаётся картинка кода.