These postcodes are structurally valid but fictional, for software testing and form design. This is not a Royal Mail postcode lookup: the Perth districts are real, the full postcodes are not assigned to any address.
A random Perth postcode generator combines a real Perth postcode district with a generated inward code, producing a structurally valid postcode that is not assigned to any delivery point.
Every postcode on this page starts from a genuine Perth postcode district. There are 2 of them, in the PH postcode area, and they all belong to the PERTH post town in Perth and Kinross. The three characters after the space are generated to the Royal Mail format rules, so a result validates in any form or database while belonging to no real property.
PH2 1ZE — district PH2, sector PH2 1, PERTH, Perth and KinrossPH2 8JB — district PH2, sector PH2 8, PERTH, Perth and KinrossPH2 3DS — district PH2, sector PH2 3, PERTH, Perth and KinrossPH1 8DB — district PH1, sector PH1 8, PERTH, Perth and KinrossPH1 9TR — district PH1, sector PH1 9, PERTH, Perth and KinrossPH2 2ZD — district PH2, sector PH2 2, PERTH, Perth and KinrossThis page produces postcodes on their own. For complete Perth addresses — building number, street, locality, post town, Perth and Kinross and postcode, laid out to Royal Mail conventions — use the random Perth address generator.
A UK postcode splits into an outward code and an inward code. The outward code identifies the district; the inward code narrows it to a small group of properties. This generator keeps the first half real and generates the second, which is what makes the output safe to use and still valid.
Perth sits in the PH postcode area. Every district below is a real outward code assigned to the PERTH post town.
| District | Locality | Structural range |
|---|---|---|
| PH1 | — | PH1 0AA – PH1 9ZZ |
| PH2 | Craigie | PH2 0AA – PH2 9ZZ |
The structural range is what the postcode grammar permits for each district, not a list of codes Royal Mail has issued. Which sectors and units are actually allocated is Postcode Address File data, which is licensed and not held here — so a generated postcode inside the range may well be unallocated. For test data that is the point.
A postcode carries more than a location. Reading one from Perth tells you which country's addressing conventions apply, which council area the address sits in, and — if you need a matching telephone number — which dialling code area it falls in.
| Field | Value | Where it comes from |
|---|---|---|
| Post town | PERTH | Royal Mail post town, written in capitals on the address |
| Postcode area | PH | The leading letters of every district above |
| Council area | Perth and Kinross | ONS administrative geography |
| Country | Scotland | One of the four countries of the United Kingdom |
| Region | Scotland | The country name |
| Dialling code | 01738 | Ofcom National Telephone Numbering Plan |
Royal Mail has not required a county line on addressed mail since 1996. PERTH plus a correct postcode is sufficient; Perth and Kinross is included because plenty of address forms and legacy databases still expect a county.
What they are not for: sending post, verifying an identity, or implying that a property exists. If you need to know whether a Perth address is deliverable, that is a licensed Royal Mail Postcode Address File lookup, and no generator can answer it.
The districts are real: all 2 of them are Royal Mail outward codes genuinely assigned to the PERTH post town. The three characters after the space are generated, so the full postcode is almost certainly not allocated to any property. That combination is deliberate — the result resolves to Perth in a district lookup and passes validation, but it is not a live delivery point and must never be used to send post.
2, in the PH postcode area: PH1, PH2. That is the count for the PERTH post town as recorded in this site's registry; a post town does not follow council boundaries, so it may not match what a resident would call "Perth".
PH. The postcode area is the leading letter or letters of the outward code, so every Perth postcode begins PH — for example PH1. The digits that follow identify the district within the area.
This page generates postcodes on their own and explains Perth's district structure. The Perth address generator produces complete postal addresses — building number, street, locality, post town, county and postcode — laid out to Royal Mail conventions. Use this page when you need postcodes to test a postcode field; use the address generator when you need whole addresses.
Yes, with no API key. Call GET /api/v1/postcodes/random?location=perth&count=25 for JSON. Add &seed=1 to get the same set back on every request, which keeps snapshot tests stable. The response carries the outward code, inward code, area, district and sector for each postcode alongside the post town and county.
Structural validation, yes: the format, the length and the excluded letters are all respected, so a correctly written regex or a library check will accept them. A validator backed by licensed Postcode Address File data will reject most of them, correctly, because the full postcode is not an allocated delivery point. If your test suite needs addresses that pass a PAF lookup, no generator can supply them.
Postcodes are generated on demand and never stored. They are for software testing and development only, and must not be used to send post, to imply a real address, or for identity verification.