{"id":21596875,"url":"https://github.com/erwanvivien/fast_qr","last_synced_at":"2025-10-19T20:40:39.825Z","repository":{"id":39751867,"uuid":"398886563","full_name":"erwanvivien/fast_qr","owner":"erwanvivien","description":"Ultra fast QRCode generation","archived":false,"fork":false,"pushed_at":"2024-12-05T14:18:06.000Z","size":7315,"stargazers_count":257,"open_issues_count":4,"forks_count":31,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-14T00:57:26.267Z","etag":null,"topics":["grcode","qr-gen","qrcode-gen","qrcode-generator","qrcode-generator-rust","qrcodegen","qrgen","rust","wasm","webassembly"],"latest_commit_sha":null,"homepage":"https://fast-qr.com/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/erwanvivien.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-08-22T19:45:10.000Z","updated_at":"2025-04-08T09:06:57.000Z","dependencies_parsed_at":"2023-09-27T23:00:11.395Z","dependency_job_id":"dce61e17-e998-448e-96fe-a1efd38e8fc9","html_url":"https://github.com/erwanvivien/fast_qr","commit_stats":{"total_commits":587,"total_committers":16,"mean_commits":36.6875,"dds":0.0681431005110733,"last_synced_commit":"03982d76fbe4053cec7aa69ce8fd2b86078e0dd4"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erwanvivien%2Ffast_qr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erwanvivien%2Ffast_qr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erwanvivien%2Ffast_qr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erwanvivien%2Ffast_qr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/erwanvivien","download_url":"https://codeload.github.com/erwanvivien/fast_qr/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254254043,"owners_count":22039792,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["grcode","qr-gen","qrcode-gen","qrcode-generator","qrcode-generator-rust","qrcodegen","qrgen","rust","wasm","webassembly"],"created_at":"2024-11-24T18:01:55.788Z","updated_at":"2025-10-19T20:40:34.805Z","avatar_url":"https://github.com/erwanvivien.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"\u003cdiv style=\"display: flex; justify-content: center\"\u003e\n  \u003cimg src=\"assets/banner.svg\"  alt=\"Example qr for website example.com\"/\u003e\n\u003c/div\u003e\n\n`fast_qr` is approximately 6-7 times faster than `qrcode`, see [benchmarks](#benchmarks)\n\nYou can create a QR as\n\n- [x] Raw matrix, well suited for custom usage\n- [x] Vectorized image, well suited for web usage\n- [x] Image, well suited for mobile / print usage\n\n# Usage\n\n## Rust\n\n### Examples\n\nYou can run the examples with:\n\n```sh\ncargo run --example simple\ncargo run --example svg -F svg\ncargo run --example image -F image\n```\n\nThey are all explained in detail below.\n\n### Converts `QRCode` to Unicode\n\n```rust\nuse fast_qr::convert::ConvertError;\nuse fast_qr::qr::QRBuilder;\n\nfn main() -\u003e Result\u003c(), ConvertError\u003e {\n    // QRBuilder::new can fail if content is too big for version,\n    // please check before unwrapping.\n    let qrcode = QRBuilder::new(\"https://example.com/\")\n        .build()\n        .unwrap();\n\n    let str = qrcode.to_str(); // .print() exists\n    println!(\"{}\", str);\n\n    Ok(())\n}\n```\n\n### Converts `QRCode` to SVG [docs.rs](https://docs.rs/fast_qr/latest/fast_qr/convert/svg/index.html)\n\n_Note: It requires the `svg` feature_\n\n```rust\nuse fast_qr::convert::ConvertError;\nuse fast_qr::convert::{svg::SvgBuilder, Builder, Shape};\nuse fast_qr::qr::QRBuilder;\n\nfn main() -\u003e Result\u003c(), ConvertError\u003e {\n    // QRBuilder::new can fail if content is too big for version,\n    // please check before unwrapping.\n    let qrcode = QRBuilder::new(\"https://example.com/\")\n        .build()\n        .unwrap();\n\n    let _svg = SvgBuilder::default()\n        .shape(Shape::RoundedSquare)\n        .to_file(\u0026qrcode, \"out.svg\");\n\n    Ok(())\n}\n```\n\n### Converts `QRCode` to an image [docs.rs](https://docs.rs/fast_qr/latest/fast_qr/convert/image/index.html)\n\n_Note: It requires the `image` feature_\n\n```rust\nuse fast_qr::convert::ConvertError;\nuse fast_qr::convert::{image::ImageBuilder, Builder, Shape};\nuse fast_qr::qr::QRBuilder;\n\nfn main() -\u003e Result\u003c(), ConvertError\u003e {\n    // QRBuilder::new can fail if content is too big for version,\n    // please check before unwrapping.\n    let qrcode = QRBuilder::new(\"https://example.com/\")\n        .build()\n        .unwrap();\n\n    let _img = ImageBuilder::default()\n        .shape(Shape::RoundedSquare)\n        .background_color([255, 255, 255, 0]) // Handles transparency\n        .fit_width(600)\n        .to_file(\u0026qrcode, \"out.png\");\n\n    Ok(())\n}\n```\n\n## JavaScript / Typescript\n\n### Installation\n\n```bash\nnpm install --save fast_qr\n# Or\nyarn add fast_qr\n```\n\n### Create an svg\n\n```js\n/// Once `init` is called, `qr_svg` can be called any number of times\nimport init, { qr_svg, SvgOptions, Shape } from '/pkg/fast_qr.js'\n\nconst options = new SvgOptions()\n  .margin(4)\n  .shape(Shape.Square)\n  .image(\"\")  // Can be a URL or a base64 encoded image\n  .background_color(\"#b8a4e5\")\n  .module_color(\"#ffffff\");\n\n// Using then / catch:\ninit()\n  .then(() =\u003e {\n    for (let i = 0; i \u003c 10; i++) {\n      const svg = qr_svg(\"https://fast-qr.com\", options);\n      console.log(svg);\n    }\n  })\n  .catch(console.error);\n\n// Or using modern async await:\nawait init();\nfor (let i = 0; i \u003c 10; i++) {\n  const svg = qr_svg(\"https://fast-qr.com\", options);\n  console.log(svg);\n}\n```\n\n# Build WASM\n\n### WASM module also exists in NPM registry\n\nPackage is named `fast_qr` and can be installed like so :\n\n```\nnpm install --save fast_qr\n```\n\n### WASM module might be bundled\n\nFind a bundled version in the latest [release](https://github.com/erwanvivien/fast_qr/releases).\n\n### WASM module can be built from source\n\n```bash\n./wasm-pack.sh # Runs build in release mode and wasm-opt twice again\nwasm-pack pack pkg # Creates an archive of said package\n# wasm-pack publish pkg # Creates an archive \u0026 publish it to npm\n```\n\n## Benchmarks\n\nAccording to the following benchmarks, `fast_qr` is approximately 6-7x faster than `qrcode`.\n\n| Benchmark    |   Lower   | Estimate  |   Upper   |                         |\n| :----------- | :-------: | :-------: | :-------: | ----------------------- |\n| V03H/qrcode  | 524.30 us | 535.02 us | 547.13 us |                         |\n| V03H/fast_qr | 82.079 us | 82.189 us | 82.318 us | fast_qr is 6.51x faster |\n| V10H/qrcode  | 2.1105 ms | 2.1145 ms | 2.1186 ms |                         |\n| V10H/fast_qr | 268.70 us | 269.28 us | 269.85 us | fast_qr is 7.85x faster |\n| V40H/qrcode  | 18.000 ms | 18.037 ms | 18.074 ms |                         |\n| V40H/fast_qr | 2.4313 ms | 2.4362 ms | 2.4411 ms | fast_qr is 7.40x faster |\n\nMore benchmarks can be found in [/benches folder](https://github.com/erwanvivien/fast_qr/tree/master/benches).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferwanvivien%2Ffast_qr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ferwanvivien%2Ffast_qr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferwanvivien%2Ffast_qr/lists"}