Oil Detail Well
Queryable EBCDIC
The individual wells inside Texas waterflood units, with their last two W-10 tests.
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.
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.
| # | 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.
| # | 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.
| Code | Means |
|---|---|
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.