{"id":340978,"date":"2026-07-28T04:47:18","date_gmt":"2026-07-28T04:47:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/qr-top-dynamic-qr-codes-with-scan-analytics\/"},"modified":"2026-08-11T10:13:27","modified_gmt":"2026-08-11T10:13:27","slug":"dynamic-qr-codes-by-qr-top","status":"publish","type":"plugin","link":"https:\/\/mfe.wordpress.org\/plugins\/dynamic-qr-codes-by-qr-top\/","author":23533250,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.0.3","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Dynamic QR Codes by QR Top","header_author":"rootpaths","header_description":"Create dynamic QR codes for your posts and pages: change the destination after printing and track every scan. Works out of the box; connect a free QR Top account for dynamic QRs and scan analytics.","assets_banners_color":"396687","last_updated":"2026-08-11 10:13:27","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/qr-top.com\/en","header_author_uri":"https:\/\/rootpaths.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":115,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"r00tpaths","date":"2026-07-28 04:46:47"},"1.0.1":{"tag":"1.0.1","author":"r00tpaths","date":"2026-08-11 10:13:27"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3625370,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3625370,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3625370,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3625370,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Generate a QR code for any post from the editor sidebar.","2":"Connect your QR Top account in one step.","3":"The [qrtop] shortcode rendering a QR in a post.","4":"Scan analytics in the QR Top dashboard."}},"plugin_section":[],"plugin_tags":[232,150390,1373,7937,727],"plugin_category":[36],"plugin_contributors":[273560],"plugin_business_model":[],"class_list":["post-340978","plugin","type-plugin","status-publish","hentry","plugin_tags-analytics","plugin_tags-dynamic-qr-code","plugin_tags-qr-code","plugin_tags-qr-code-generator","plugin_tags-redirect","plugin_category-analytics","plugin_contributors-r00tpaths","plugin_committers-r00tpaths"],"banners":{"banner":"https:\/\/ps.w.org\/dynamic-qr-codes-by-qr-top\/assets\/banner-772x250.png?rev=3625370","banner_2x":"https:\/\/ps.w.org\/dynamic-qr-codes-by-qr-top\/assets\/banner-1544x500.png?rev=3625370","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/dynamic-qr-codes-by-qr-top\/assets\/icon-128x128.png?rev=3625370","icon_2x":"https:\/\/ps.w.org\/dynamic-qr-codes-by-qr-top\/assets\/icon-256x256.png?rev=3625370","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>QR Top<\/strong> adds dynamic QR codes to WordPress. Unlike a static QR code, a dynamic QR encodes a short URL that redirects to your content \u2014 so you can <strong>change the destination after printing<\/strong> and <strong>measure every scan<\/strong>.<\/p>\n\n<ul>\n<li><strong>Works out of the box<\/strong> \u2014 generate a static QR code for any post with no account at all.<\/li>\n<li><strong>One-click dynamic QR per post or page<\/strong> \u2014 generate it from the editor sidebar; if the permalink changes later, the QR keeps working (the plugin updates the destination automatically).<\/li>\n<li><strong><code>[qrtop]<\/code> shortcode<\/strong> \u2014 insert the QR anywhere in your content, with adjustable size.<\/li>\n<li><strong>Scan analytics<\/strong> \u2014 date, device type, and approximate location of every scan, in your QR Top dashboard.<\/li>\n<li><strong>QR codes that never expire<\/strong> \u2014 the free plan includes 5 dynamic QR codes with no time limit and no credit card.<\/li>\n<\/ul>\n\n<p>Perfect for restaurant menus, flyers, business cards, packaging, posters and any printed material that points to your website.<\/p>\n\n<h4>How it works<\/h4>\n\n<p>The plugin connects to your <a href=\"https:\/\/qr-top.com\">QR Top<\/a> account through its REST API. Creating an account is free and takes a minute. The QR image itself is drawn locally in the browser \u2014 the plugin only talks to the API when you create or update a QR code from the admin.<\/p>\n\n<h4>Free vs paid<\/h4>\n\n<p>The free QR Top plan includes 5 dynamic QR codes, full design customization, and scan analytics for the last 7 days. Paid plans add unlimited QR codes, full analytics history, custom domains and team features. The plugin itself is 100% free.<\/p>\n\n<h3>Source code<\/h3>\n\n<p>All PHP, CSS and JavaScript written for this plugin is included unminified in this package. The plugin bundles two third-party QR rendering libraries, both MIT licensed, whose complete source code and build tools are publicly maintained at their development locations:<\/p>\n\n<ul>\n<li>qrcode-generator 1.4.4 by Kazuhiko Arase \u2014 https:\/\/github.com\/kazuhikoarase\/qrcode-generator (bundled as <code>assets\/js\/qrcode.js<\/code>)<\/li>\n<li>qr-code-styling 1.9.2 by Denys Kozak \u2014 https:\/\/github.com\/kozakdenys\/qr-code-styling (bundled as the published UMD build <code>assets\/js\/qr-code-styling.js<\/code>)<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the QR Top API (https:\/\/qr-top.com) to create and manage your dynamic QR codes. It sends: the destination URL and title of the entries you generate QR codes for, and your API key for authentication. No data is sent for visitors of your site \u2014 QR images are rendered locally in the browser and scans are recorded by QR Top's redirect service, not by this plugin. See QR Top's <a href=\"https:\/\/qr-top.com\/en\/privacy\">privacy policy<\/a> and <a href=\"https:\/\/qr-top.com\/en\/terms\">terms of service<\/a>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin.<\/li>\n<li>Go to <strong>QR Top<\/strong> in your admin menu.<\/li>\n<li>Paste your API key (create a free account at qr-top.com if you don't have one \u2014 Settings \u2192 API \u2192 Create key).<\/li>\n<li>Edit any post or page and click <strong>Generate QR code<\/strong> in the QR Top box.<\/li>\n<li>Insert it in your content with the <code>[qrtop]<\/code> shortcode.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"can%20i%20change%20the%20url%20after%20printing%20the%20qr%20code%3F\"><h3>Can I change the URL after printing the QR code?<\/h3><\/dt>\n<dd><p>Yes \u2014 that is exactly what dynamic QR codes are for. The printed QR encodes a short URL that redirects to your content; you can change the destination anytime from your QR Top dashboard, and the plugin does it automatically if your permalink changes.<\/p><\/dd>\n<dt id=\"do%20the%20qr%20codes%20expire%3F\"><h3>Do the QR codes expire?<\/h3><\/dt>\n<dd><p>No. QR Top's free plan has no trial countdown: your 5 free dynamic QR codes keep working forever, even if you never pay.<\/p><\/dd>\n<dt id=\"do%20i%20need%20a%20qr%20top%20account%3F\"><h3>Do I need a QR Top account?<\/h3><\/dt>\n<dd><p>Not for static QR codes \u2014 those work instantly with no account. Dynamic QR codes (editable after printing, with scan analytics) require a free QR Top account, since the redirects and analytics live there.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20slow%20down%20my%20site%3F\"><h3>Does the plugin slow down my site?<\/h3><\/dt>\n<dd><p>No. QR images are drawn in the visitor's browser from a bundled 20KB library, with no external requests on your public pages.<\/p><\/dd>\n<dt id=\"where%20do%20i%20see%20the%20scan%20statistics%3F\"><h3>Where do I see the scan statistics?<\/h3><\/dt>\n<dd><p>In your QR Top dashboard (qr-top.com): scans per day, device types and countries for each QR code.<\/p><\/dd>\n<dt id=\"can%20i%20track%20qr%20code%20scans%20per%20post%20or%20page%3F\"><h3>Can I track QR code scans per post or page?<\/h3><\/dt>\n<dd><p>Yes. Each post gets its own dynamic QR code, so its scans are counted separately \u2014 compare the poster against the flyer, or one location against another, from your dashboard.<\/p><\/dd>\n<dt id=\"can%20one%20qr%20code%20redirect%20by%20device%2C%20language%20or%20time%20of%20day%3F\"><h3>Can one QR code redirect by device, language or time of day?<\/h3><\/dt>\n<dd><p>Yes, with smart routing (a QR Top plan feature): the same printed QR can send iPhone users to the App Store, English browsers to your English page, or show a different menu after 8 pm. You configure the rules in your QR Top dashboard.<\/p><\/dd>\n<dt id=\"how%20do%20i%20change%20where%20a%20qr%20code%20points%20without%20reprinting%20it%3F\"><h3>How do I change where a QR code points without reprinting it?<\/h3><\/dt>\n<dd><p>Open the post in WordPress or the link in your QR Top dashboard and edit the destination URL. Every printed copy keeps working \u2014 the QR encodes a stable short URL, and only the redirect changes.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>The plugin's own screens no longer show notices injected by other plugins, keeping the onboarding and All QRs pages clean.<\/li>\n<li>The onboarding screen now mentions the paid plans (unlimited QR codes, custom domains, smart routing) next to the free tier.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Static QR codes for any post or page with no account required, plus the [qrtop] and [qrtop static=\"...\"] shortcodes.<\/li>\n<li>Dynamic QR codes (free QR Top account): editable after printing, automatic destination sync when the permalink changes, scan analytics, and rendering with the design saved in your dashboard (colors, gradients, logo, frame).<\/li>\n<li>All QRs screen to manage every entry with a QR: scan counts, unlink, or delete to free a slot in your plan.<\/li>\n<\/ul>","raw_excerpt":"Dynamic QR codes with real-time scan analytics: edit the destination after printing. 5 free QR codes that never expire.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/340978","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=340978"}],"author":[{"embeddable":true,"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/r00tpaths"}],"wp:attachment":[{"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=340978"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=340978"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=340978"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=340978"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=340978"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/mfe.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=340978"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}