Get the data

Free. You will be asked to confirm an email address before the files are built — that is the only gate, and it is there so we can tell you when a large export is ready.

Preview the first 100 rows

What this is

OLA028K. The oil proration schedule gives a multi-well unit one allowable instead of giving each of its wells one, so the wells inside those units are absent from the ledger's well records entirely. This is the file that carries them: 85,974 wells, keyed by the unit they belong to, each with its county, its status, its standing under the plugging rule and the last two W-10 tests filed for it -- the potential, the producing method, the water and the gas-oil ratio on each.

Decoded here from the 100-byte EBCDIC records into one row per well, with the two tests flattened onto it as test1_ and test2_ and published again one-test-per-row as Oil Detail Well Tests.

Verified against production: not one of 5,000 sampled wells here appears in the ledger's own well table, and 4,945 of 5,000 find their multi-well group. The two files partition the state's oil wells rather than overlapping.

What you can do with it

Break a waterflood unit's lease allowable down to the wells that make it up, compare each well's tested potential against the others in its unit, and find wells whose last test is years old. District 08 and 8A hold two thirds of the file, which is the Permian secondary-recovery story in one table.

Gotchas

The test values are POTENTIAL, not production: barrels per calendar day the well is capable of, from the test or computed from production. Texas reports oil production by lease, and this file does not break that rule.

'The last two tests' means the last two RRC holds, not two recent ones. test2_date runs from 1974 to May 2026 on the August 2026 tape: a well whose most recent test is from the 1970s is a well that has not been tested since.

well_no is right-justified in six bytes, so 58,641 of the 85,974 rows carry leading blanks. rec_no is NOT padded, but the oil ledger writes the same identifier right-justified in six bytes as m_record, so the two only meet after trimming.

The district is the ledger's spelling -- 06E, 07B, 07C, 08A -- where the W-10 and PDQ write 6E, 7B, 7C, 8A. Against the W-10 file, 576 of 5,000 sampled wells match on the columns as they stand and 3,258 once the leading zero is stripped and the well number trimmed.

test1_date is null on 690 wells and test2_date on 663, where the tape held zeros. A test date with a day of 00 -- the tape does write them -- could not be made into a date either.

Sentinel dates are everywhere: 0000-00-00, 00000000 and 1900-01-01 all mean "not recorded". The upstream loader turns the unparseable ones into NULL, but a 1900 date that parsed cleanly is still a placeholder, not a fact.

Record layout

39 columns. Byte positions are 1-based and come from the RRC record layout, so you can check our decoding against the original file yourself.

oil_detail_well 27 columns

This is the table you get when you download or query Oil Detail Well.

Record layout for oil_detail_well — 27 columns, with byte positions
# Column Type Bytes RRC name Meaning Lookup
1 district key join text 1-3 DW-DST RRC district the well is in, as the ledger tape writes it: 01-06, 06E, 07B, 07C, 08, 08A, 09, 10, with the leading zero PDQ does not use. District 08 holds 28,882 of the 85,974 rows and 08A another 26,298 -- multi-well units are largely a Permian waterflood story. e.g. 01 RRC district (proration ledger spelling)
2 field_no key join integer 4-11 DW-FIELD-NUMBER The eight-digit RRC field number: five for the field, three for the reservoir. e.g. 6469001
3 operator_no key join integer 12-17 DW-OPERATOR-NUMBER P-5 organization number of the operator of the lease the well sits on. e.g. 102014
4 lease_no key join integer 18-22 DW-LSE The five-digit RRC oil lease number, unique within its district. e.g. 31
5 rec_no key text 23 DW-RECNO Identifier of the multi-well group this well belongs to, one character. It is the oil ledger's m_record with the padding stripped: '1' on 69,853 wells, 'A' on 13,022, and a few B, C, 2, 3, I, 4, 6, D and H. A digit usually names a waterflood grouping. e.g. 1
6 well_no key text 24-29 DW-WELLNO The operator's well number, six bytes and positional -- the tape right-justifies it, so 58,641 of the 85,974 rows carry leading blanks and well 1 reads ' 1'. Trim before joining to the W-10 file or PDQ; the padding is kept here because it is what the pristine file holds. e.g. ' 2'
7 county_code smallint 30-32 DW-CO Three-digit county code the well is in. Onshore counties are the odd numbers, offshore areas the even ones. e.g. 325
8 type_well text 33 DW-TYPEW Status of the well as it prints on the proration schedule: P prorated (36,112 rows), S shut-in (25,716), E shut-in with a 14(B)(2) exception (21,635), X exempt, N new pooled exempt, and also A abandoned, D disposal, G gas injection, M marginal, W water injection. Blank on 2,439 wells, which the manual reads as prorated. e.g. P
9 ex14b_code text 34 DW-EX14B-CD The well's standing under Statewide Rule 14(B)(2): 0 no extension (49,050 rows), 1 extension in effect (23,322), 4 denied, 5 denied for an H-15 violation, B a shut-in multiple completion, P partially plugged, L a legal violation, H an H-15 violation (2,422).
10 ex14b_yyyymm integer 35-40 DW-14B-DATE Month the well's 14(B)(2) extension expires, CCYYMM as an integer. Set on 29,053 of 85,974 wells; null where the tape held zeros.
11 exc_test smallint 41 DW-EXC-TST The well's exception to annual or semi-annual testing: 0 regular testing required, 1 none, 2 no commingle test because it is metered, 3 survey only, 4 partial commingle lease, 5 and 6 lease automatic custody transfer, 7 a district office's one-month delay.
12 test_eff text 42 DW-TST-EFF Month the required W-10 becomes effective: 1-9 for January to September, A, B, C for October to December, 0 none (27,637 wells). The testing period is three months; the form is due on the first of the fourth and effective on the first of the fifth. e.g. 8
13 test1_date date 43-50 DW-TST-DT(1) Date of the PREVIOUS of the two W-10 tests the record carries. Null on 690 wells where the tape held zeros; the tape also writes a day of 00 on some tests, which the loader could not turn into a date. e.g. 2024-05-13
14 test1_oil_bbl numeric measured in bbl/d 51-55 DW-OIL(1) The well's working potential on the previous test, in barrels per calendar day. Four whole numbers and one decimal on the tape, restored here -- this is a potential from the test or calculated from production, not the month's production.
15 test1_prd_method smallint 56 DW-PRD-METHOD(1) How the well was producing on the previous test: 0 flowing, 1 pumping, 2 gas lift, 3 gas lift with a 10,000:1 exception, 4 vacuum, 5 casing leak, 6 designate well, 7 receiving well, 8 water well shut down.
16 test1_water_bbl integer measured in bbl 57-60 DW-WATER(1) Barrels of water produced with the oil on the previous test, generally over 24 hours.
17 test1_gor integer measured in cf/bbl 61-65 DW-GOR(1) Gas-oil ratio on the previous test, in cubic feet per barrel. Zero where the ratio was not reported.
18 test2_date date 66-73 DW-TST-DT(2) Date of the MOST RECENT of the two W-10 tests. Null on 663 wells. The August 2026 tape ranges from 1974 to May 2026 -- a well tested in the 1970s is one that has not tested since. e.g. 2025-03-08
19 test2_oil_bbl numeric measured in bbl/d 74-78 DW-OIL(2) The well's working potential on the most recent test, in barrels per calendar day, to one decimal place. The largest in the August 2026 tape is 8,414.0. e.g. 1.0
20 test2_prd_method smallint 79 DW-PRD-METHOD(2) Producing method on the most recent test, same codes as test1_prd_method. e.g. 1
21 test2_water_bbl integer measured in bbl 80-83 DW-WATER(2) Barrels of water produced with the oil on the most recent test.
22 test2_gor integer measured in cf/bbl 84-88 DW-GOR(2) Gas-oil ratio on the most recent test, in cubic feet per barrel.
23 offshore smallint 89 DW-OFF-SHOR Where the well is: 0 land, 1 state bays and estuaries, 2 state offshore from islands, 3 federal, 4-9 combinations. Non-zero on two wells in the whole file.
24 form_lacking smallint 90 DW-FRM-LCK How many months the well's W-10 has been delinquent, 1 to 9; 0 when the form was received. Non-zero on 5,925 wells.
25 sub_well smallint 91 DW-SUB-WELL What a shut-in well is being used for: 1 dry hole, 2 water supply, 3 observation, 4 gas storage, 5 LPG storage, 6 other service, 7 sealed, 8 field operation, 9 other injection; 0 not shut in. Non-zero on 18,155 wells.
26 delq_form smallint 92 DW-DELQ-FORM 1 when the well is shut in because of a delinquent form. 3,744 wells.
27 date_last_utilized_yyyymm integer 93-98 DW-DT-LST-UTL Month a shut-in well was last used, CCYYMM as an integer. Set on 6,144 wells; null where the tape held zeros.

oil_detail_well_test 12 columns

Documented here because RRC ships it in the same file. It is not in a download of this dataset — it is published separately as Oil Detail Well — W-10 Tests.

Record layout for oil_detail_well_test — 12 columns, with byte positions
# Column Type Bytes RRC name Meaning Lookup
1 district key join text 1-3 DW-DST RRC district the well is in, in the ledger's spelling. e.g. 01 RRC district (proration ledger spelling)
2 field_no key join integer 4-11 DW-FIELD-NUMBER The eight-digit RRC field number.
3 operator_no key join integer 12-17 DW-OPERATOR-NUMBER P-5 organization number of the lease operator.
4 lease_no key join integer 18-22 DW-LSE The five-digit RRC oil lease number. e.g. 31
5 rec_no key text 23 DW-RECNO Identifier of the multi-well group, one character. e.g. 1
6 well_no key text 24-29 DW-WELLNO The operator's well number, right-justified in six bytes as the tape wrote it. e.g. ' 2'
7 test_ordinal key smallint Which of the record's two W-10 tests this row is: 1 the previous test, 2 the most recent. The tape's OCCURS 2 group in the order the manual gives it -- the first 24 bytes are the previous test and the next 24 the most recent. Every well has both rows even when a test is empty, which is why 171,948 rows sit behind 85,974 wells. e.g. 2
8 test_date date 43-50 DW-TST-DT Date the test was filed. Null where the tape held zeros -- 690 of the previous tests and 663 of the most recent ones. e.g. 2025-03-08
9 oil_bbl numeric measured in bbl/d 51-55 DW-OIL The well's working potential on this test, in barrels per calendar day, to one decimal place. A potential, not production. e.g. 1.0
10 prd_method smallint 56 DW-PRD-METHOD Producing method on the test: 0 flowing, 1 pumping, 2 gas lift, 3 gas lift with a 10,000:1 exception, 4 vacuum, 5 casing leak, 6 designate well, 7 receiving well, 8 water well shut down. e.g. 1
11 water_bbl integer measured in bbl 57-60 DW-WATER Barrels of water produced with the oil on the test, generally over 24 hours.
12 gor integer measured in cf/bbl 61-65 DW-GOR Gas-oil ratio on the test, in cubic feet per barrel. Zero where it was not reported.

Code lookups used here

Every coded column in this dataset resolves to a real lookup table, so a well code of G can be read as what it actually means.

RRC district (proration ledger spelling) 14 values

Read by district, district

The district as the oil and gas proration ledger tapes write it, which is NOT how the rest of the corpus writes it. The ledger pads the lettered districts to three bytes -- 06E, 07B, 07C, 08A -- where the W-10, the G-10 and PDQ's district_name write 6E, 7B, 7C and 8A. That difference is worth a code set of its own because it is invisible in a join: a query matching ledger.district against w10.district returns rows for the ten numeric districts and silently drops the four lettered ones, which are 24% of the oil ledger's wells. Strip the leading zero before joining, or add it coming the other way. `canonical_value` is the internal district number, the same convention rrc.district uses, so a ledger district resolves to the same district in either numbering.

RRC district (proration ledger spelling) — 14 codes and their meanings
CodeMeans
01 District 01 — San Antonio Written 01 here and 01 elsewhere.
02 District 02 — San Antonio Written 02 here and 02 elsewhere.
03 District 03 — Houston Written 03 here and 03 elsewhere.
04 District 04 — Corpus Christi Written 04 here and 04 elsewhere.
05 District 05 — Kilgore Written 05 here and 05 elsewhere.
06 District 06 — Kilgore Written 06 here and 06 elsewhere.
06E District 6E — Kilgore The ledger writes 06E; the W-10 and PDQ write 6E.
07B District 7B — Abilene The ledger writes 07B; the W-10 and PDQ write 7B.
07C District 7C — San Angelo The ledger writes 07C; the W-10 and PDQ write 7C.
08 District 08 — Midland Written 08 here and 08 elsewhere.
08A District 8A — Midland The ledger writes 08A; the W-10 and PDQ write 8A.
08B District 8B — reserved The manuals list 08B as reserved for future use. No record of any ledger tape has ever carried it.
09 District 09 — Wichita Falls Written 09 here and 09 elsewhere.
10 District 10 — Pampa Written 10 here and 10 elsewhere.

Source: RRC manuals OLA013K, GSA020K and OLA028K (DIST/DIST-NO items); the thirteen spellings in use confirmed as the complete distinct set in texas.oil_ledger_field, texas.oil_ledger_well and texas.oil_detail_well on 2026-08-21

What this joins to

The Railroad Commission never states these keys anywhere in the files. They are the reason the data is hard to use, so here they are with the exact columns on both sides.

Oil Detail Well joins to Oil Detail Well — W-10 Tests on District and Field number and Operator number and Lease number and Rec number and Well number — one row here matches many rows there.

has its two W-10 tests

The same two tests the well row carries as test1_ and test2_, one row each. All 5,000 sampled wells have both rows, because the tape's OCCURS 2 group is always two occurrences even when a test is empty.

oil-detail-well.district = oil-detail-well-tests.district AND oil-detail-well.field_no = oil-detail-well-tests.field_no AND oil-detail-well.operator_no = oil-detail-well-tests.operator_no AND oil-detail-well.lease_no = oil-detail-well-tests.lease_no AND oil-detail-well.rec_no = oil-detail-well-tests.rec_no AND oil-detail-well.well_no = oil-detail-well-tests.well_no

Oil Detail Well joins to Oil Ledger — Leases on District and Field number and Operator number and Lease number — many rows here share a single row there.

is on the lease

From a well inside a multi-well unit to the lease record that holds its balances and its gatherers. 4,963 of 5,000 sampled detail wells match. Both files are the same tape family, so the district spelling and the key layout agree and nothing needs normalising.

oil-detail-well.district = oil-ledger-leases.district AND oil-detail-well.field_no = oil-ledger-leases.field_no AND oil-detail-well.operator_no = oil-ledger-leases.operator_no AND oil-detail-well.lease_no = oil-ledger-leases.lease_no

Oil Detail Well joins to P-5 Organization (ASCII) on Operator number = ID — many rows here share a single row there.

is operated by

The P-5 number of the operator of the lease the well sits on. All 5,000 sampled detail wells resolve; both columns are integers.

oil-detail-well.operator_no = p5-organization-ascii.id

Oil Detail Well joins to PDQ Well Completion Directory on District = District name and Lease number = Lease number — rows can match many rows in both directions.

is on the lease whose completions are

The same hop for the wells inside multi-well units: from the detail tape to PDQ's completions for the lease, which carry the API number. 3,015 of 5,000 sampled detail wells match as the columns stand and all 5,000 once the district's leading zero is stripped -- the detail tape is two thirds District 08 and 8A, so the spelling costs it more than it costs the ledger. Restrict PDQ to oil_gas_code = 'O'. These two columns are different types — one is text, the other an integer — so a direct equality is rejected by Postgres. Cast the text side to integer, which also disposes of any leading zeros; casting the integer to text would not, because '000123' and 123 are not equal as text.

oil-detail-well.district = pdq-well-completion.district_name AND oil-detail-well.lease_no = pdq-well-completion.lease_no

Oil Detail Well joins to Oil Ledger — Multi-Well Groups on District and Field number and Operator number and Lease number — many rows here share a single row there.

is made up of the wells

The wells inside a multi-well unit, which the ledger does not carry: 2,965 of 3,000 sampled groups have detail-well records, and 4,965 of 5,000 detail wells find their lease this way. Add the group identifier to narrow a lease with more than one group, but not as an equality: the ledger writes it as m_record right-justified in six bytes and the detail tape writes it as rec_no with no padding at all. Zero of 5,000 match untrimmed; 4,945 match trimmed.

oil-ledger-multiwell-groups.district = oil-detail-well.district AND oil-ledger-multiwell-groups.field_no = oil-detail-well.field_no AND oil-ledger-multiwell-groups.operator_no = oil-detail-well.operator_no AND oil-ledger-multiwell-groups.lease_no = oil-detail-well.lease_no

Where this comes from

Published by
Texas Railroad Commission — the original page
Original format
EBCDIC IBM mainframe encoding (cp037). Opening it as text gives you nonsense; it has to be transcoded first.
RRC publishes
Updated once a month (Monthly. Available by the 27th.)
RRC download link
GoAnywhere MFT
Record layout manual
Our table
texas.oil_detail_well

EZRRC is an independent mirror of public-domain data published by the Texas Railroad Commission. It is not affiliated with or endorsed by the RRC. For any legal or regulatory purpose, verify against the official RRC release.