Cash App QR code generator
100% Private & Local — Your data never leaves your browser. These QR codes are permanent and will never expire.
Cash App & Venmo settings
Design
Add a centre logo
The image is read in this page and embedded in the code as a data: URL. It is not uploaded, and it stays inside the file you download.
More design options
The dark half of the code. Keep it well below the background in lightness.
Covers the quiet zone as well as the gaps between modules. A transparent background leaves it out of the file, so nothing is drawn with it.
Contrast 11.5:1 between the modules and the background.
PNG and WebP keep an alpha channel; the SVG simply omits the background rectangle. Whatever the code is placed on becomes the light half of the contrast.
A gradient fills the dark modules only. Its lighter end sets the contrast a scanner actually gets, so both ends have to stay dark.
The second colour, used only while a gradient is selected. It is measured for contrast alongside the first.
Degrees clockwise from a left-to-right sweep. A radial gradient spreads from the centre outwards, so the angle applies to a linear one only.
Rounded shapes cover less of each cell. The centre stays covered, which is where a decoder samples, but a small print of a dense code reads more reliably as squares.
The ring of the three finder patterns.
The eye inside each finder pattern.
The blank margin around the code, measured in modules. 4 is the specified minimum.
Higher recovery survives more damage and costs capacity, so the same content produces a denser symbol.
A logo sits at the centre and holds the level at H. Its width limit follows the symbol: 14% on the smallest code, 30% on a dense one.
Live preview & export
Enter your $cashtag.
Export
Raster, for screens
Complete the form to enable the downloads.
Export size and encoded text
- Payload
- Nothing encoded yet
- Symbol
- Not built yet
- Recovery
- Q
Waiting for input
Build a scannable link to your Cash App or Venmo profile, optionally opening the payment screen with an amount filled in. The link is assembled here and used exactly as shown.
When someone scans it
The phone opens cash.app or venmo.com, which hands off to the installed app when there is one. The payer sees your profile and confirms the payment there, not here.
Cash App links
A $cashtag has a public web address of the form https://cash.app/$janedoe. Adding a number as a further path segment opens the payment screen with that figure already entered: https://cash.app/$janedoe/25.
The dollar sign belongs in the path, so this tool puts it there — enter your cashtag with or without it and the result is the same. Amounts use a full stop for decimals and carry no currency symbol, because the currency is fixed by the account rather than by the link. Cash App accounts are denominated in US dollars, or pounds sterling for UK accounts, and the link cannot override that.
The public page also works on a desktop browser, which is worth knowing when a printed code ends up photographed and shared rather than scanned.
Venmo links
Venmo's current profile address is https://venmo.com/u/janedoe, and that is what this tool produces when no amount is set. Venmo also documents query parameters on the shorter form, so with an amount the link becomes https://venmo.com/janedoe?txn=pay&amount=25 — txn=pay opens the pay screen rather than a request.
Whether the amount actually appears pre-filled depends on the app version and on whether the person scanning is signed in; Venmo has changed the behaviour of these links more than once. Venmo also asks for a note before a payment can be sent, so the payer will be prompted for one regardless of what the link contains.
Venmo operates in US dollars only and, unlike Cash App, its profile pages are largely aimed at people who already have an account. Someone without one is sent to a sign-up flow rather than to a payment screen.
Check the profile the code actually opens
Neither service is contacted while the code is built, so a username that does not exist, belongs to somebody else, or contains one wrong character produces a link that looks entirely normal. On Cash App in particular, cashtags are short and similar names are common.
Scan the finished code with a phone before printing it and read the profile that opens: the display name, the photo and, if you set one, the amount. Send yourself a small payment from another account if the code will be printed in quantity or fixed to something you cannot easily replace.
Both services settle between the payer and your account with nothing in between. This site adds no fee, no intermediary handle and no redirect, and it cannot see, reverse or reconcile any payment made through a code it generated.
Questions and answers
How is this different from the QR code inside the Cash App app?
The in-app code is generated by Cash App and tied to your account, and it is the better choice when you have the app in front of you. This tool builds the same public link as a file you can style, size and place into printed artwork, which the app's own export does not give you.
Can I stop the payer changing the amount?
No. On both services the figure in the link only pre-fills the field, and the payer confirms the final amount in their own app. That is a deliberate part of how consumer payment apps work, and no link format changes it. For an amount that must be exact, use an invoicing product rather than a payment link.
Do these links work outside the United States?
Partly. Cash App operates in the US and the UK, so a UK account settles in pounds and a US account in dollars. Venmo is US-only. A link scanned elsewhere still opens the web page, but the person scanning will not be able to pay without an account in a supported country.
Will the code keep working if I change my username?
No. The link contains the username, so changing your $cashtag or Venmo handle breaks every printed copy, and the old handle can later be claimed by someone else. Settle on the handle before printing, and treat a handle change as a reprint.
How a static QR code works
Every code on this site is static: the payload is written into the black and white modules themselves. Nothing is looked up when the code is read, no server of ours takes part, and no subscription holds the printed code up. The same property is the limit — once it is printed, what it contains cannot be changed.
Three things then decide whether a printed code reads: how many bytes the payload came to, which recovery level absorbs the damage, and how wide a single module ends up on paper. These guides work through each of them with the numbers.