Oil Well Status (26 Month W-10)
Queryable EBCDIC
A rolling window of W-10 oil well status tests, one row per test filed.
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
OLA001K. The W-10 is the periodic test filing that keeps an oil well's allowable current: the well's daily oil, gas and water on the test day, how it was being produced, and — for a well that is not producing — what it is being used for and when it was shut in. RRC publishes the recent cycles as one 110-byte EBCDIC record per test; here they are decoded, with the implied decimal restored, the year/month/day fields composed into dates and the mainframe's unprintable "not in a unit" marker turned into a null.
What you can do with it
Track how a well's tested potential has moved over the recent cycles, see which wells on a lease are shut in and since when, and find wells whose W-10 is overdue.
Gotchas
The window rolls, and it is shorter than the name suggests: the tape fetched in August 2026 held thirteen cycles (July 2025 through July 2026), with the tests themselves reaching back to 2022. A test that was in last month's file may not be in this month's, so a history has to be accumulated by keeping snapshots.
The key is district + lease_no + well_no, and the district is written the way RRC prints it (01-06, 6E, 7B, 7C, 08, 8A, 09, 10). PDQ writes the same lease under its INTERNAL district number, so a join to PDQ goes through PDQ's district_name, not district_no — and only against oil_gas_code = 'O', because a gas lease can carry the same digits.
daily_oil_bbl is stored with one decimal place; the tape wrote it as six digits with the point implied, so 30 barrels arrived as '000300'. The other volumes are whole numbers.
Two flag columns carry values the 1998 manual does not list: producing_method has '0' and 'B' alongside the documented letters, and type_well_flag is '00' in two-thirds of rows (on wells that also report a producing method) and 'PR' in a few thousand. RRC has not said what they mean; the column descriptions record what the manual does document and nothing more.
gas_lift_gas_injected is zero in every row of the current tape, and prod_method_other_rpt is twenty zeros rather than blank when no 'other' method was filed.
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
31 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_well_status_w10
31 columns
| # | Column | Type | Bytes | RRC name | Meaning | Lookup |
|---|---|---|---|---|---|---|
| 1 |
district
key
join
|
text | 1-2 | W10-DIST |
RRC district the well is in, written the way RRC prints it: 01-06, 6E, 7B, 7C, 08, 8A, 09, 10. Not the internal number PDQ uses in district_no — join to PDQ on district_name. e.g. 01 | RRC district (printed designation) |
| 2 |
lease_no
key
join
|
integer | 3-7 | W10-LEASE |
The five-digit oil lease number, unique within its district. Stored as an integer, so PDQ's zero-padded '05082' is 5082 here. e.g. 3424 | — |
| 3 |
well_no
key
join
|
text | 8-13 | W10-WELL-NO |
The operator's well number on the lease, up to six characters: '1', '1H', '26H'. e.g. 8756 | — |
| 4 |
unit_no
|
text | 14 | W10-UNIT-NO |
Unit identifier, one character; a digit usually names a waterflood grouping. The tape writes an unprintable byte when the well is not in a unit — 78% of records — and the loader stores those as null rather than a control character. | — |
| 5 |
cycle_year
|
smallint | 15-18 | W10-CYCLE-YEAR |
Four-digit year of the ADP reporting cycle the W-10 was processed in. | — |
| 6 |
cycle_month
|
smallint | 19-20 | W10-CYCLE-MONTH |
Two-digit month of the reporting cycle. | — |
| 7 |
eff_year
|
smallint | 21-24 | W10-EFF-YEAR |
Year the test was made effective. Composed into effective_date. | — |
| 8 |
eff_month
|
smallint | 25-26 | W10-EFF-MONTH |
Month the test was made effective. | — |
| 9 |
eff_day
|
smallint | 27-28 | W10-EFF-DAY |
Day the test was made effective. | — |
| 10 |
type_status_flag
|
text | 29 | W10-TYPE-STATUS-FLAG |
What kind of filing this is: I initial potential test, R retest, S survey, W Form W-2 filed, D dummy record used to initialise RRC's database. Surveys are the bulk of the file. e.g. R | — |
| 11 |
producing_method
|
text | 30 | W10-PRODUCING-METHOD |
How the well was being produced when tested: F flowing, P pumping, G gas lift, V vacuum, S steam injection, H secondary head injection, C carbon dioxide, O other (see prod_method_other_rpt). The file also carries '0' and 'B', which the manual does not list. Null on wells that are not producing. e.g. P | — |
| 12 |
prod_method_other_rpt
|
text | 31-50 | W10-PROD-METH-OTHER-RPT |
The producing method as written in, when producing_method is O for other. Twenty zeros — not blank — when it does not apply. | — |
| 13 |
test_year
|
smallint | 51-54 | W10-TEST-YEAR |
Year the well was tested. Composed into test_date. | — |
| 14 |
test_month
|
smallint | 55-56 | W10-TEST-MONTH |
Month the well was tested. | — |
| 15 |
test_day
|
smallint | 57-58 | W10-TEST-DAY |
Day the well was tested. | — |
| 16 |
daily_oil_bbl
|
numeric measured in bbl/d | 59-64 | W10-DAILY-OIL |
Daily oil production on the test, in barrels, to one decimal place. The tape stores this as six digits with the decimal point implied (PIC 9(5)V9), so 30 barrels was written '000300'; the loader restores the point. e.g. 3.0 | — |
| 17 |
daily_water_bbl
|
integer measured in bbl/d | 65-68 | W10-DAILY-WATER |
Daily water produced on the test, in barrels. | — |
| 18 |
daily_gas_mcf
|
bigint measured in MCF/d | 69-75 | W10-DAILY-GAS |
Daily gas produced during the potential test, in thousand cubic feet. | — |
| 19 |
gas_oil_ratio
|
integer measured in cf/bbl | 76-80 | W10-GAS-OIL-RATIO |
Gas-oil ratio in cubic feet per barrel, as filed on the W-10 (RRC computes it from the daily gas and daily oil). | — |
| 20 |
gas_lift_gas_injected
|
integer measured in MCF/d | 81-86 | W10-GAS-LIFT-GAS-INJECTED |
Gas injected by a gas-lift well, MCF per day. Zero in every row of the tape fetched in August 2026, including the 36,884 gas-lift wells. | — |
| 21 |
siwh_year
|
smallint | 87-90 | W10-SIWH-YEAR |
Year the well was shut in or last used. Composed into siwh_date. | — |
| 22 |
siwh_month
|
smallint | 91-92 | W10-SIWH-MONTH |
Month the well was shut in or last used. | — |
| 23 |
type_well_flag
|
text | 93-94 | W10-TYPE-WELL-FLAG |
What a non-producing well is being used for. The manual lists AI air injection, GI gas injection, WI water injection, ST steam injection, CO CO2 injection, DI salt water disposal, AB abandoned, TA temporarily abandoned, SH shut-in, LP LPG storage, GS gas storage, WS water supply, GT geothermal, OB observation, OS other service, LU lease use, DW domestic, PP partial plug, SM shut-in multi-completion and BM brine mining. The file also carries '00' (two-thirds of rows, on wells that report a producing method) and 'PR', which it does not. e.g. 00 | — |
| 24 |
processed_year
|
smallint | 95-98 | W10-PROCESSED-YEAR |
Year RRC processed the W-10. Composed into processed_date. | — |
| 25 |
processed_month
|
smallint | 99-100 | W10-PROCESSED-MONTH |
Month RRC processed the W-10. | — |
| 26 |
processed_day
|
smallint | 101-102 | W10-PROCESSED-DAY |
Day RRC processed the W-10. | — |
| 27 |
cycle_date
key
|
date | — | — | The reporting cycle as a date — the first of cycle_year/cycle_month. Composed by the loader; null when the tape carried zeros. e.g. 2026-01-01 | — |
| 28 |
effective_date
key
|
date | — | — | Date the W-10 test was made effective for allowable purposes, composed from eff_year, eff_month and eff_day. Never null on the current tape. | — |
| 29 |
test_date
|
date | — | — | Date the well was tested, composed from test_year, test_month and test_day. Null in the 890 rows where the tape carried zeros. e.g. 2026-01-05 | — |
| 30 |
siwh_date
|
date | — | — | First of the month the well was shut in or last used, composed from siwh_year and siwh_month. Null while the well is producing. | — |
| 31 |
processed_date
|
date | — | — | Date RRC processed the W-10, composed from the processed_* columns. Never null on the current tape. | — |
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 (printed designation) 14 values
Read by district
The district as the Railroad Commission prints it: 01-06, 6E, 7B, 7C, 08, 8A, 09 and 10, plus 20 for statewide. This is what appears on permits, completions, ST-1 filings and inspection reports. It is not interchangeable with the internal district number. A column holding '11' means District 8A under the internal numbering and nothing at all under this one.
| Code | Means |
|---|---|
01 |
District 01 — San Antonio RRC District 01, administered from the San Antonio district office. |
02 |
District 02 — San Antonio RRC District 02, administered from the San Antonio district office. |
03 |
District 03 — Houston RRC District 03, administered from the Houston district office. |
04 |
District 04 — Corpus Christi RRC District 04, administered from the Corpus Christi district office. |
05 |
District 05 — Kilgore RRC District 05, administered from the Kilgore district office. |
06 |
District 06 — Kilgore RRC District 06, administered from the Kilgore district office. |
6E |
District 6E — Kilgore RRC District 6E, administered from the Kilgore district office. |
7B |
District 7B — Abilene RRC District 7B, administered from the Abilene district office. |
7C |
District 7C — San Angelo RRC District 7C, administered from the San Angelo district office. |
08 |
District 08 — Midland RRC District 08, administered from the Midland district office. |
8A |
District 8A — Midland RRC District 8A, administered from the Midland district office. |
09 |
District 09 — Wichita Falls RRC District 09, administered from the Wichita Falls district office. |
10 |
District 10 — Pampa RRC District 10, administered from the Pampa district office. |
20 |
District 20 — State Wide RRC District 20, administered from the State Wide district office. |
Source: Generated from texas.pdq_gp_district.district_name
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 Well Status (26 Month W-10) joins to PDQ Well Completion Directory on District = District name and Lease number = Lease number and Well number = Well number — many rows here share a single row there.
was tested on the W-10 as
PDQ's oil-schedule well completion, matched to its W-10 tests on the printed district, lease number and well number. Restrict the PDQ side to oil_gas_code = 'O': gas completions carry gas well IDs in the same lease_no column, and 6 of 20,000 sampled gas rows collide with a real oil lease. 1,667 of 5,000 sampled oil completions have a test in the current window — the W-10 file only holds wells that filed one recently, so a miss means no recent test, not a bad key. 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.
pdq-well-completion.district_name = oil-well-status-w10.district AND pdq-well-completion.lease_no = oil-well-status-w10.lease_no AND pdq-well-completion.well_no = oil-well-status-w10.well_no
Oil Well Status (26 Month W-10) joins to PDQ Lease Summary (master) on District = District name and Lease number = Lease number — many rows here share a single row there.
has W-10 tests for its wells
From the lease's production summary to the W-10 tests of the wells on it, on printed district and lease number. Restrict the PDQ side to oil_gas_code = 'O'; 83 of 20,000 sampled gas leases share digits with an oil lease. 2,002 of 5,000 sampled oil leases have a well tested in the current window. 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.
pdq-lease-summary.district_name = oil-well-status-w10.district AND pdq-lease-summary.lease_no = oil-well-status-w10.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_well_status_w10
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.