Google Chart Server QR code API now replicated at

Skip to first unread message

Sean Owen

Nov 24, 2013, 8:59:08 PM11/24/13
The Google Chart Server API has long had a QR code generator:
It is deprecated, although won't go away for well over a year.

However the QR code generator inside it is old, and has likely not been updated or fixed in a while. It was the basis for the port in java, and we have fixed several things over the years in the Java version.

So for both reasons, it seems good to expose a similar API. Now the web app at has replicated as much as possible the API exposed by the chart server. For example:

Anything that works at ought to work at

In particular, one notable difference is that this generator will (correctly) insert an ECI segment for non-ISO-8859-1 encoding. This is correct but might trip up bad decoders.

Let me know if you try it and see any problems. Soon I will switch the generator to use this for generation.

Judy B. Cornelius

Jun 14, 2016, 3:37:53 PM6/14/16
to zxing
I am a teacher and am using QR codes on each chromebook assigned to a student in my class. I created QR codes in Google sheets that attach to a cell with student information. I mistakenly thought these would be dynamic, allowing me to change the students' names from year to year without changing the QR image - not so. I need to find a way to redirect the image to another location that can be edited, or I need to learn how to edit the original cell without changing the image. The images are attached to the computers now.


Sean Owen

Jun 14, 2016, 4:25:42 PM6/14/16
to zxing
A QR code just encodes a string. The string it encodes can never change, just like printed words on a page will always be the same words. I'm not sure what you're looking for. Maybe you meant to encode a URL that redirects to other URLs, and want to change the redirect, but, that's nothing to do with a QR code itself.

shirou tou

Mar 23, 2021, 6:47:25 PM3/23/21
to zxing
Can I use QR code generator API for my web app?
This API is very simple and useful.

2016年6月15日水曜日 5:25:42 UTC+9

Sean Owen

Mar 23, 2021, 6:57:11 PM3/23/21
to shirou tou, zxing
Sure, go ahead. I'd only ask you not send a huge number of requests to it (it will start blocking requests that send lots).
If you need much more scale, you can easily run the service as well. The project has a module that produces a .war web app that can be run in most any servlet container.

You received this message because you are subscribed to the Google Groups "zxing" group.
To unsubscribe from this group and stop receiving emails from it, send an email to
To view this discussion on the web visit

shirou tou

Mar 24, 2021, 5:13:04 AM3/24/21
to zxing
Thank you a lot!
I'll access API mainly for my small project, so probably it won't occur huge requests. 

2021年3月24日水曜日 7:57:11 UTC+9

Samveen S. Gulati

May 11, 2021, 2:33:38 AM5/11/21
to zxing
The api  at is returning empty responses:

samveen@laptop:~$ curl -v ''
*   Trying
* Connected to ( port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use h2
* Server certificate:
*  subject:
*  start date: Apr 15 00:00:00 2020 GMT
*  expire date: Jul 14 12:00:00 2022 GMT
*  subjectAltName: host "" matched cert's ""
*  issuer: C=US; O=DigiCert Inc;; CN=GeoTrust RSA CA 2018
*  SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x5625291ace10)
> GET /w/chart?cht=qr&chs=350x350&chld=L&choe=UTF-8&chl=test HTTP/2
> Host:
> user-agent: curl/7.68.0
> accept: */*
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* old SSL session ID is stale, removing
* Connection state changed (MAX_CONCURRENT_STREAMS == 100)!
* TLSv1.3 (IN), TLS alert, close notify (256):
* Empty reply from server
* Closing connection 0
* TLSv1.3 (OUT), TLS alert, close notify (256):
curl: (52) Empty reply from server



Mar 28, 2022, 6:45:37 PMMar 28
to zxing
I am checking Zxing barcode engine but it recognizes text as UPC format.
Here is the sample image.
Is there any way to fix it?
Reply all
Reply to author
0 new messages