Decode your Ontario COVID-19 Vaccination QR code (Smart Health Card).


⌛ Limitations: Does this site verify QR codes? No. Click to learn more.

This site does not verify the authenticity of vaccination QR codes.
Please use the Verify Ontario mobile app.

This tool is also focused on Ontario vaccination codes and may not work on SHC codes from other regions.

🔐 Privacy: Is this site extracting data? No. Click to learn more.

This site does not extract any data. It does not send data to any external service. All data is processed on your local web browser. This site does not use cookies or local storage of your browser to save state.

The decoded Ontario vaccine QR code contains your legal name, date of birth, and COVID vaccination details (type of shots and dates received).

If you'd like to be extra safe you can:

❓ Motivation: Why did you do this? Click if you're curious.

I recently started working at Verily, a sister company to Google, which focuses on healthcare and life sciences. I've been learning about the tech used to generate the COVID QR codes including the FHIR data format, and the SMART app framework. When I received my vaccination QR code it seemed like a perfect opportunity to dive in deeper.

At first I found a few Python decoding examples ( [1], [2]). but I didn't want to go through the hassle of setting up a Python workspace. Then I found shc-covid19-decoder but it didn't work for me. I couldn't stop thinking about it so I decided to make my own. In the end, I found it a consuming learning experience as I dove into the quirks of JWTs, base64 encoding, and zlib compression used by SMART Health Cards.

If this kind of stuff gets you psyched, then you may be interested in a job at Verily! We're currently hiring in Verily Canada with open roles in software, data science, UX, and more. Please apply here at Verily Waterloo Jobs or shoot me a message on LinkedIn.

🆘 Instructions:

Follow the steps below to decode your QR code.

  1. Get your QR code: Ontario COVID-19 vaccination portal
  2. Scan your QR code: I screenshotted the PDF and used Google Lens to scan it.
  3. Copy the data: The data should start with shc:/ followed by numbers.
  4. Enter it: Paste it in to the input field on this site and click submit



Intermediary data



JWT Header

JWT Payload - Encoded

JWT Payload - Decoded (Uint8Array)


Enter an input and press enter to process...