Statewide Oil Well Database
Queryable EBCDIC
Every oil well on the proration schedule, with 26 months of allowables and its 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
WLA001K, the oil half. RRC's live well database, dumped monthly as one 228-byte EBCDIC record per IMS segment: 293,069 wells on the oil proration schedule, each carrying up to twenty-six monthly reporting cycles, the previous allowables issued inside each cycle, the forms the operator still owes, the W-10 tests behind the potential, casing-leakage and Panhandle detail, UIC pointers and free-text remarks — 12,111,947 rows across eighteen tables.
The spine is WL-ROOT-KEY, the eight-digit RRC internal well id that never changes even when the well moves lease. It is what the historical ledger points at, and PDQ's well completion table carries it as well_root_no, so this is the tape that ties the proration world to the wellbore world: 293,022 of the 293,069 wells resolve there, and PDQ's row carries the API number this tape does not.
What you can do with it
Follow one well's allowable month by month for two years and see what changed it; find every well whose allowable is being held back for a form (427,648 cycles are missing a W-10, 366,362 a W-2); read the W-10 test history behind a potential, back to 2007 rather than the thirteen cycles the W-10 status file keeps; list the wells subject to Rule 14(b)(2), sealed, or transferring allowable to a neighbour.
Gotchas
Everything on this tape is ON the schedule. All 293,069 roots carry on_off_sched_ind 'N' and removed_reason '00', so a plugged or removed well is simply absent — this is the current schedule, not a history of wells. The wellbore database is where a plugged well lives.
district_no is RRC's INTERNAL district number, not the designation the industry prints: 07 is District 6E, 08 is 7B, 09 is 7C, 10 is District 08, 11 is 8A, 13 is District 09 and 14 is District 10. Reading 10 as District 10 moves 101,421 Permian wells to the Panhandle. The W-10 status file next door writes the printed form, so the two cannot be joined on the district column as they stand.
county_code is '000' in every one of the 293,069 rows. The manual says so — 'reserved for future use; currently this data is stored in the Well Bore and Drilling Permits Databases' — and it is not a load fault. There is also no operator number, no field number and no API number anywhere on this tape. The way to all four is wlroot_key to PDQ's well completion table, or district + lease number to PDQ's regulatory lease directory (293,049 of 293,069 resolve).
well_no is right-aligned in six characters, so well 1 is stored as ' 1' — 232,882 of the 293,069 rows carry leading spaces. Trim before comparing it with anything.
unit_no is null on 207,419 wells because the tape writes the mainframe's HIGH-VALUES byte there, which the manual documents as 'not in a unit'. unit_no_2 is a different field: the Yates-field unit letter, '0' on 286,261 wells.
The 26-month window rolls. The tape fetched in August 2026 holds cycles 2024-07 through 2026-08 and nothing older, so a history longer than that has to be accumulated by keeping the monthly snapshots. The W-10 segment is the exception: it keeps up to fifteen tests per well and reaches back to cycle 2007-08, with test dates from 1990.
Zero is a value, not a blank. The packed-decimal amounts arrive as a true 0 for a well with no allowable, and only RRC's all-nines 'not applicable' sentinel becomes null.
The W-10 tests here are NOT the Oil Well Status (26 Month W-10) dataset. That file is OLA001K/wlf607, one row per test with the district printed and the lease and well number on every row, and it holds thirteen cycles; this is WLA001K's own W-10 segment, 609,334 tests hung off the well root by wlroot_key, deeper in history and with no lease key of its own. Use the status file to sweep tests across leases; use this one when you are already looking at a well.
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
215 columns. Byte positions are 1-based and come from the RRC record layout, so you can check our decoding against the original file yourself.
wl_oil_well
29 columns
This is the table you get when you download or query Statewide Oil Well Database.
| # | Column | Type | Bytes | RRC name | Meaning | Lookup |
|---|---|---|---|---|---|---|
| 1 |
wlroot_key
key
join
|
integer | 3-10 | WL-OIL-ROOT-KEY |
The eight-digit RRC internal well id. It never changes, even when the well moves to a different lease, and it is the value the historical ledger's LDGSDATA-WLROOT-KEY and PDQ's well_root_no point at -- 293,022 of these 293,069 wells resolve to a PDQ well completion, which is where the API number is. e.g. 133922 | — |
| 2 |
on_off_sched_ind
|
text | 11 | WL-OIL-ON-OFF-SCHED-INDICATOR |
'N' on schedule, 'Y' off it. Every one of the 293,069 rows is 'N': a well that leaves the oil schedule leaves this tape. | — |
| 3 |
oil_gas_code
|
text | 12 | WL-OIL-OR-GAS |
'O' on every row -- this is the oil tape. | Oil or gas schedule |
| 4 |
district_no
join
|
smallint | 13-14 | WL-OIL-NUMERIC-DISTRICT |
RRC's INTERNAL district number, 01 to 14. Not the designation the industry prints: 07 is District 6E, 08 is 7B, 09 is 7C, 10 is District 08 (101,421 wells), 11 is 8A, 13 is District 09 and 14 is District 10. 12 (8B) is not used. e.g. 10 | RRC district (internal number) |
| 5 |
lease_no
join
|
integer | 15-19 | WL-OIL-LEASE-NUMBER |
The five-digit oil lease number, unique only within its district. Stored as an integer, so PDQ's zero-padded '05082' is 5082 here. e.g. 55 | — |
| 6 |
unit_no
|
text | 20 | WL-OIL-UNIT-NUMBER |
Unit identifier, one character; a digit usually names a waterflood grouping. Null on 207,419 wells, where the tape writes the mainframe's HIGH-VALUES byte -- the manual's documented 'not in a unit'. | — |
| 7 |
well_no
join
|
text | 21-26 | WL-OIL-WELL-NUMBER |
The operator's well number, right-aligned in six characters: well 1 is stored as ' 1'. 232,882 of the 293,069 rows carry leading spaces, so trim before comparing it with anything. e.g. 4 | — |
| 8 |
removed_reason
|
text | 27-28 | WL-OIL-REMOVE-FROM-SCHED-REASN |
Why the well left the oil schedule: 01 plugged and abandoned, 02 converted to a fresh water well, 05 transferred to another field, 06 worked over to a different field or reservoir, 07 reclassed to a gas well, 08 granted downhole commingling, 09 added in error. '00' -- not removed -- on 290,818 rows, and null on 2,250: a removed well drops off this tape at the next roll, so only one row of the August 2026 file carries a reason at all. e.g. 00 | — |
| 9 |
removed_date
|
date | 29-36 | WL-OIL-REMOVE-FROM-SCHED-DATE |
Date the well was removed from the schedule. Set on one row. | — |
| 10 |
reclassed_well_key
join
|
integer | 37-44 | WL-OIL-RECLASSED-WELL-POINTER |
The well id on the GAS tape this well was reclassed to or from, carried on 1,843 wells. Only 6 of them point at a root still on the gas tape, so read it as a historical pointer rather than a join key. | — |
| 11 |
prob_prevent_allow_flag
|
text | 45 | WL-OIL-PROB-PREVENT-ALLOW-FLAG |
'Y' where a problem is severe enough that RRC's monthly calculate skips the well and no allowable can be issued until it clears. 'N' on every row of this tape. | — |
| 12 |
reservoir
|
text | 47-51 | WL-OIL-RESERVOIR |
The reservoir the well was actually completed in, five characters. Unused in practice: '00000' on 173,517 wells, null on 119,363, and a real name on fewer than 200. | — |
| 13 |
bay_estuary_flag
|
text | 52 | WL-OIL-BAY-OR-ESTUARY |
'Y' on the 13 wells completed in a bay or estuary, which are eligible for the averaged AEZ (adjacent estuarine zone) allowable. | — |
| 14 |
w10_exc_to_svy_flag
|
text | 57 | WL-OIL-W10-EXC-TO-SVY-FLAG |
'Y' where the well has an exception to filing the W-10 survey. Four wells of 293,069. | — |
| 15 |
county_code
|
text | 58-60 | WL-OIL-ONSHORE-CO-CODE |
'000' in every one of the 293,069 rows. The manual says why: the item is reserved for future use, and 'currently this data is stored in the Well Bore and Drilling Permits Databases'. It is not a load fault, and there is no other county on this tape. e.g. 000 | — |
| 16 |
original_potential
|
numeric measured in bbl/d | 61-65 | WL-OIL-ORIGINAL-POTENTIAL |
The well's ORIGINAL potential in barrels per day, to three decimal places -- what it could produce when completed, as against the working potential that tracks current production. Used by fields whose allocation formula is potential-based, such as East Texas, and zero on the wells whose field is not. e.g. 0.000 | — |
| 17 |
unit_no_2
|
text | 69 | WL-OIL-UNIT-NO |
The Yates-field unit letter (WL-OIL-UNIT-NO), a different item from unit_no above. '0' on 286,261 wells, meaning not in a Yates unit. e.g. 0 | — |
| 18 |
unit_value
|
numeric | 70-72 | WL-OIL-UNIT-VALUE |
Productive potential of a Yates-field unit, proportional to the other units in the field: 1.000 is a 100 percent unit, 0.500 a half, 0.375 a 37 1/2 percent unit. Zero elsewhere. | — |
| 19 |
survey_eff_yyyymm
|
integer | 73-78 | WL-OIL-SURVEY-EFF-DATE |
Effective month of the well's current W-10 survey, as one YYYYMM integer. This is the clock a delinquent-survey check runs against; 244,367 wells carry one. e.g. 202608 | — |
| 20 |
new_wb_connect_date
|
date | 79-86 | WL-OIL-NEW-WB-CONNECT-DATE |
Panhandle new-wellbore date: a new hole earns a higher casinghead gas limit for twelve months. Only 4,033 wells carry a value and 3,490 of those decode to a year before 1900, so the column is mostly filler the tape never cleared -- treat a pre-1900 date as no date. | — |
| 21 |
subject_14b2_flag
|
text | 87 | WL-OIL-SUBJECT-TO-14B2-FLAG |
'Y' on the 80,612 inactive wells subject to Statewide Rule 14(b)(2), which requires an abandoned well to be plugged. e.g. N | — |
| 22 |
uic_violation_flag
|
text | 88 | WL-OIL-UIC-VIOLATION-FLAG |
'Y' on 1,799 injection wells that are subject to 14(b)(2) and denied the extension because of a UIC violation. | — |
| 23 |
legal_violation_flag
|
text | 89 | WL-OIL-LEGAL-VIOLATION-FLAG |
'Y' where the 14(b)(2) extension is denied because the Legal Division is handling a problem with the well. Four wells. | — |
| 24 |
ext_state_plug_flag
|
text | 90 | WL-OIL-EXT-FOR-STATE-PLUG-FLAG |
'Y' where the well has been extracted to begin being plugged with state funds under SB 1103. Thirty-seven wells. | — |
| 25 |
cert_hb1975_flag
|
text | 91 | WL-OIL-CERT-HB-1975-FLAG |
The HB 1975 two-year-inactive tax certification: A automatic, M manual, '0' not certified (291,317 wells). The tape also holds 66 'N' and one 'Y' that the manual does not list. | — |
| 26 |
cert_effective_yyyymm
|
integer | 92-97 | WL-OIL-CERT-EFFECTIVE-DATE |
Month the HB 1975 certification took effect, as one YYYYMM integer. All 1,681 of them fall between 1993-09 and 1996-02. | — |
| 27 |
cert_letter_date
|
date | 98-105 | WL-OIL-CERTIFICATION-LTR-DATE |
Date RRC wrote to the operator about the HB 1975 certification. | — |
| 28 |
shut_in_yyyymm
|
integer | 106-111 | WL-OIL-SHUT-IN-DATE |
Month the well was set to shut-in status, as one YYYYMM integer. 101,432 of the 293,069 wells carry one; null means not shut in. | — |
| 29 |
pend_removal_14b2_flag
|
text | 112 | WL-OIL-PEND-REMOVAL-14B2-FLAG |
'Y' on 2,603 wells that are working off 14(b)(2) status by producing again -- three consecutive producing months clear it. The tape also writes '0' where the question does not apply. | — |
wl_oil_casing_leakage
4 columns
Documented here because RRC ships it in the same file. It is not in a download of this dataset.
| # | Column | Type | Bytes | RRC name | Meaning | Lookup |
|---|---|---|---|---|---|---|
| 1 |
wlroot_key
key
join
|
integer | — | — | The eight-digit RRC internal well id the row hangs off (WL-ROOT-KEY). Carried down from the 01 well root above it on the tape: the child segments have no key of their own. | — |
| 2 |
east_texas_seq
key
|
integer | — | — | Which East Texas row of this well the designation hangs under -- its `seq`. | — |
| 3 |
seq
key
|
integer | — | — | Ordinal of this segment under its parent, counting from 1 in tape order. EZRRC's, not RRC's -- the segment carries no search field, and the manual calls several of these non-recurring where the tape does not agree, so the ordinal is what keeps the primary key unique. | — |
| 4 |
designated_well_key
join
|
integer | 3-10 | — | The well id of a well designated by hearing to size this well's casing-leakage transfer. Another root key on this same tape. | — |
wl_oil_east_texas
13 columns
Documented here because RRC ships it in the same file. It is not in a download of this dataset.
| # | Column | Type | Bytes | RRC name | Meaning | Lookup |
|---|---|---|---|---|---|---|
| 1 |
wlroot_key
key
join
|
integer | — | — | The eight-digit RRC internal well id the row hangs off (WL-ROOT-KEY). Carried down from the 01 well root above it on the tape: the child segments have no key of their own. | — |
| 2 |
seq
key
|
integer | — | — | Ordinal of this segment under its parent, counting from 1 in tape order. EZRRC's, not RRC's -- the segment carries no search field, and the manual calls several of these non-recurring where the tape does not agree, so the ordinal is what keeps the primary key unique. | — |
| 3 |
eswa_bonus_amt
|
smallint measured in bbl/d | 3-4 | — | Earned salt water allowable: bonus barrels given to the wells on a lease because one of them re-injects salt water into the Woodbine sand it came from. Roughly one barrel of oil per 115 barrels re-injected. | — |
| 4 |
tswa_bonus_amt
|
smallint measured in bbl/d | 5-6 | — | Transferred salt water allowable -- the same bonus, but credited to wells on a lease other than the one doing the injecting. | — |
| 5 |
clat_flag
|
text | 7 | — | 'C' where this is a casing-leakage well: one plugged for a leak in its surface or production casing, with its allowable transferred elsewhere so the operator has a reason to plug it. e.g. N | — |
| 6 |
designated_flag
|
text | 8 | — | 'D' where this well is one of the up to four wells nearest a casing-leak well, which is how the size of that transfer is worked out. e.g. D | — |
| 7 |
key_well_flag
|
text | 9 | — | 'Y' on a key well: shut in but capable of producing, kept for periodic reservoir-pressure tests and still given an allowable. e.g. N | — |
| 8 |
clat_remarks
|
text | 10-59 | — | Fifty characters of free text about the plugged casing-leakage well. | — |
| 9 |
wor_exception_flag
|
text | 60 | — | 'Y' where the well has an exception to the East Texas water-oil ratio rule, which otherwise limits it to 15 barrels of salt water per barrel of top allowable. | — |
| 10 |
water_well_shut_down
|
text | 61 | — | 'Y' where the well is shut in because its last test showed 100 barrels of water a day or more; its allowable is produced by the other wells on the lease. | — |
| 11 |
clat_removal_date
|
date | 62-69 | — | Date the casing-leakage allowable transfer was removed. | — |
| 12 |
clat_plugged_out_amt
|
smallint measured in bbl/d | 70-72 | — | The allowable in force when the well was plugged for the leak. | — |
| 13 |
clat_plugged_out_code
|
text | 73 | — | Type of allowable it had then: P prorated, M marginal. | — |
wl_oil_forms_lacking
4 columns
Documented here because RRC ships it in the same file. It is not in a download of this dataset.
| # | Column | Type | Bytes | RRC name | Meaning | Lookup |
|---|---|---|---|---|---|---|
| 1 |
wlroot_key
key
join
|
integer | — | — | The eight-digit RRC internal well id the row hangs off (WL-ROOT-KEY). Carried down from the 01 well root above it on the tape: the child segments have no key of their own. e.g. 646 | — |
| 2 |
cycle_yyyymm
key
|
integer | — | — | The reporting cycle this row belongs to, as one YYYYMM integer, carried down from the reporting-cycle segment above it on the tape. e.g. 202608 | — |
| 3 |
seq
key
|
integer | — | — | Ordinal of this segment under its parent, counting from 1 in tape order. EZRRC's, not RRC's -- the segment carries no search field, and the manual calls several of these non-recurring where the tape does not agree, so the ordinal is what keeps the primary key unique. | — |
| 4 |
form_lacking
|
text | 3-6 | — | The form the operator still owes before this well can be given an allowable for the cycle: W-10, W-2, PLAT, P-12, P-1, P-5, P-4, P-15, LOG (electrical log), W-12, W-15, L-1, R-37 and R-38 (the Rule 37/38 exception), and OTHR. The August 2026 tape is dominated by W-10 (427,648 rows) and W-2 (366,362); 75,968 are OTHR, and an OTHR row is spelled out in the forms-lacking description table beside it. e.g. W-10 | — |
wl_oil_forms_lacking_desc
5 columns
Documented here because RRC ships it in the same file. It is not in a download of this dataset.
| # | Column | Type | Bytes | RRC name | Meaning | Lookup |
|---|---|---|---|---|---|---|
| 1 |
wlroot_key
key
join
|
integer | — | — | The eight-digit RRC internal well id the row hangs off (WL-ROOT-KEY). Carried down from the 01 well root above it on the tape: the child segments have no key of their own. | — |
| 2 |
cycle_yyyymm
key
|
integer | — | — | The reporting cycle this row belongs to, as one YYYYMM integer, carried down from the reporting-cycle segment above it on the tape. | — |
| 3 |
forms_lacking_seq
key
|
integer | — | — | Which forms-lacking row of the same cycle this describes -- its `seq`. The tape hangs the description under the form record above it and carries no key of its own. | — |
| 4 |
seq
key
|
integer | — | — | Ordinal of this segment under its parent, counting from 1 in tape order. EZRRC's, not RRC's -- the segment carries no search field, and the manual calls several of these non-recurring where the tape does not agree, so the ordinal is what keeps the primary key unique. | — |
| 5 |
form_description
|
text | 3-22 | — | Twenty characters naming the form, used only where the row above is 'OTHR'. Free text, so 'P4 W/VALID GATHERER' and 'FROM OLD SYSTEM' sit beside each other. e.g. P4 W/VALID GATHERER | — |
wl_oil_panhandle_bal
4 columns
Documented here because RRC ships it in the same file. It is not in a download of this dataset.
| # | Column | Type | Bytes | RRC name | Meaning | Lookup |
|---|---|---|---|---|---|---|
| 1 |
wlroot_key
key
join
|
integer | — | — | The eight-digit RRC internal well id the row hangs off (WL-ROOT-KEY). Carried down from the 01 well root above it on the tape: the child segments have no key of their own. | — |
| 2 |
seq
key
|
integer | — | — | Ordinal of this segment under its parent, counting from 1 in tape order. EZRRC's, not RRC's -- the segment carries no search field, and the manual calls several of these non-recurring where the tape does not agree, so the ordinal is what keeps the primary key unique. | — |
| 3 |
lost_compl_2_8_flag
|
text | 3 | — | 'Y' where the well was complying with the Panhandle order under guideline 2 or the computer-set 8 and lost it, because the lease's average gas-oil ratio over twelve months went past 5000:1. | — |
| 4 |
lost_compl_2_8_date
|
date | 4-11 | — | Date that compliance was lost. | — |
wl_oil_panhandle_prod
4 columns
Documented here because RRC ships it in the same file. It is not in a download of this dataset.
| # | Column | Type | Bytes | RRC name | Meaning | Lookup |
|---|---|---|---|---|---|---|
| 1 |
wlroot_key
key
join
|
integer | — | — | The eight-digit RRC internal well id the row hangs off (WL-ROOT-KEY). Carried down from the 01 well root above it on the tape: the child segments have no key of their own. | — |
| 2 |
seq
key
|
integer | — | — | Ordinal of this segment under its parent, counting from 1 in tape order. EZRRC's, not RRC's -- the segment carries no search field, and the manual calls several of these non-recurring where the tape does not agree, so the ordinal is what keeps the primary key unique. | — |
| 3 |
casinghead_gas_amount
|
integer measured in MCF | 3-7 | — | Casinghead gas overage (positive) or underage (negative) accumulated this cycle. Zero means the well produced little or no casinghead gas. | — |
| 4 |
casinghead_gas_percent
|
numeric measured in percent | 8-12 | — | This well's share of the lease's casinghead gas for the cycle, to five decimal places: its daily casinghead gas from the effective W-10 over the sum of every producing well's on the lease. | — |
wl_oil_prev_allowable
20 columns
Documented here because RRC ships it in the same file. It is not in a download of this dataset.
| # | Column | Type | Bytes | RRC name | Meaning | Lookup |
|---|---|---|---|---|---|---|
| 1 |
wlroot_key
key
join
|
integer | — | — | The eight-digit RRC internal well id the row hangs off (WL-ROOT-KEY). Carried down from the 01 well root above it on the tape: the child segments have no key of their own. | — |
| 2 |
cycle_yyyymm
key
|
integer | — | — | The reporting cycle this row belongs to, as one YYYYMM integer, carried down from the reporting-cycle segment above it on the tape. | — |
| 3 |
seq
key
|
integer | — | — | Ordinal of this segment under its parent, counting from 1 in tape order. EZRRC's, not RRC's -- the segment carries no search field, and the manual calls several of these non-recurring where the tape does not agree, so the ordinal is what keeps the primary key unique. | — |
| 4 |
prev_effective_date
|
date | 3-10 | — | Date the superseded allowable took effect. | — |
| 5 |
prev_issue_date
|
date | 11-18 | — | Date the superseded allowable was issued. | — |
| 6 |
work_potential
|
numeric measured in bbl/d | 19-22 | — | The working potential behind that earlier allowable, in barrels per calendar day. | — |
| 7 |
allow_amount
|
integer measured in bbl/d | 24-26 | — | The earlier daily oil allowable in barrels, excluding any transfer. | — |
| 8 |
gas_limit
|
integer measured in MCF/d | 27-30 | — | The earlier casinghead gas limit. Whether it is MCF per day or per month depends on the field the well is in. | — |
| 9 |
gas_oil_ratio
|
integer measured in cf/bbl | 31-33 | — | The gas-oil ratio in cubic feet per barrel behind that allowable. | — |
| 10 |
prev_remarks
|
text | 34-63 | — | Thirty characters of free-form or computer-generated remark, as printed on the supplement the operator was mailed. | — |
| 11 |
allowable_code
|
text | 64-65 | — | Proration status behind the earlier allowable: 00 none, 01 prorated, 03 not producing but eligible, 06 marginal, 07 discovery, 08 exempt. | — |
| 12 |
allow_limited_code
|
text | 66 | — | Why that allowable was limited: 1 insufficient production history, 2 potential, 3 excessive GOR, 4 water produced, 5 excessive water-oil ratio (East Texas). | — |
| 13 |
type_well
|
text | 67-68 | — | The well's category at the time, from appendix A. | — |
| 14 |
monthly_allowable
|
integer measured in bbl | 69-72 | — | The monthly oil allowable that was assigned. | — |
| 15 |
csh_monthly_limit
|
integer measured in MCF | 73-77 | — | The monthly casinghead gas limit that was assigned. | — |
| 16 |
code_14b2
|
text | 78 | — | The 14(b)(2) extension in force then: 0 none, 1 granted, 4 denied. | — |
| 17 |
etex_pro_marg
|
text | 79 | — | Type of casing-leak allowable transferred, East Texas only: P prorated, M marginal. | — |
| 18 |
etex_oil_trns
|
smallint measured in bbl/d | 80-81 | — | Barrels of casing-leak oil allowable received from another East Texas well. | — |
| 19 |
etex_gas_trns
|
smallint measured in MCF/d | 82-83 | — | Casing-leak gas allowable received from another East Texas well. | — |
| 20 |
allocation_flag
|
text | 84 | — | 'Y' where the well fed the field's allocation formula at the time. Declared in the copybook and unexplained in the notes. | — |
wl_oil_prev_type
3 columns
Documented here because RRC ships it in the same file. It is not in a download of this dataset.
| # | Column | Type | Bytes | RRC name | Meaning | Lookup |
|---|---|---|---|---|---|---|
| 1 |
wlroot_key
key
join
|
integer | — | — | The eight-digit RRC internal well id the row hangs off (WL-ROOT-KEY). Carried down from the 01 well root above it on the tape: the child segments have no key of their own. | — |
| 2 |
seq
key
|
integer | — | — | Ordinal of this segment under its parent, counting from 1 in tape order. EZRRC's, not RRC's -- the segment carries no search field, and the manual calls several of these non-recurring where the tape does not agree, so the ordinal is what keeps the primary key unique. | — |
| 3 |
prev_well_type
|
text | 3-4 | — | A category the well has previously belonged to, from appendix A. The August 2026 tape carries no 11 records at all, so this table is empty; it is exported anyway, because the month RRC writes them again is not a month this page should quietly drop a table. | — |
wl_oil_remark
6 columns
Documented here because RRC ships it in the same file. It is not in a download of this dataset.
| # | Column | Type | Bytes | RRC name | Meaning | Lookup |
|---|---|---|---|---|---|---|
| 1 |
wlroot_key
key
join
|
integer | — | — | The eight-digit RRC internal well id the row hangs off (WL-ROOT-KEY). Carried down from the 01 well root above it on the tape: the child segments have no key of their own. | — |
| 2 |
seq
key
|
integer | — | — | Ordinal of this segment under its parent, counting from 1 in tape order. EZRRC's, not RRC's -- the segment carries no search field, and the manual calls several of these non-recurring where the tape does not agree, so the ordinal is what keeps the primary key unique. | — |
| 3 |
remark_key
|
smallint | 3-5 | — | RRC's own remark number. Remarks are stored in ascending order by it, and a remark long enough to wrap occupies several rows in order. e.g. 1 | — |
| 4 |
remark_date
|
date | 6-13 | — | When the remark was generated, either by hand or automatically as a side effect of another update. e.g. 2026-06-22 | — |
| 5 |
remark_text
|
text | 14-79 | — | Sixty-six characters of free text from the district or proration office. Order by seq to read a wrapped remark whole; the tape does not mark where one remark ends and the next begins. e.g. PER D.O. THE W10 FILED ON 6-9-25 SHOWS WELL #2 WAS PRODUCING | — |
| 6 |
print_on_ledger_flag
|
text | 80 | — | 'Y' where the remark is printed on the ledger the operator receives. The file also writes '0' where the question does not apply. | — |
wl_oil_report_cycle
48 columns
Documented here because RRC ships it in the same file. It is not in a download of this dataset.
| # | Column | Type | Bytes | RRC name | Meaning | Lookup |
|---|---|---|---|---|---|---|
| 1 |
wlroot_key
key
join
|
integer | — | — | The eight-digit RRC internal well id the row hangs off (WL-ROOT-KEY). Carried down from the 01 well root above it on the tape: the child segments have no key of their own. e.g. 772524 | — |
| 2 |
cycle_yyyymm
key
|
integer | 3-8 | — | The reporting cycle, as one YYYYMM integer, and half the primary key. Twenty-six cycles per well and 25.7 on average: the August 2026 tape runs 2024-07 to 2026-08 and holds nothing older. e.g. 202606 | — |
| 3 |
acres
|
numeric measured in acres | 9-12 | — | Acres productive of hydrocarbons assigned to the well for allowable purposes, as the operator filed them on Form P-15. Zero where the field's formula does not use acreage; 3,899,112 of the 7,543,198 cycles carry a positive number. e.g. 80.00 | — |
| 4 |
acre_feet
|
integer measured in acre-ft | 13-15 | — | Acre-feet assigned to the well: acres times sand thickness, filed on Form P-15. | — |
| 5 |
net_acre_feet
|
integer measured in acre-ft | 16-18 | — | Acres times the portion of the sand determined to be productive. | — |
| 6 |
bhp
|
integer measured in psi | 19-21 | — | Bottom-hole pressure in PSI, measured or calculated and filed on Form W-2. Some allocation formulas use it directly. | — |
| 7 |
working_potential
|
numeric measured in bbl/d | 22-25 | — | The potential actually used to calculate this cycle's allowable, in barrels per calendar day to one decimal place. It comes from a W-2 or W-10 test and may be adjusted up or down to reflect what the well really produces -- which is what makes it 'working'. e.g. 113.2 | — |
| 8 |
tolerance_acres_flag
|
text | 26 | — | 'Y' where tolerance acres were added to the productive acreage. | — |
| 9 |
effective_date
|
date | 27-34 | — | Date this allowable took effect. | — |
| 10 |
issue_date
|
date | 35-42 | — | Date this allowable was issued. | — |
| 11 |
allowable_amount
|
integer measured in bbl/d | 43-45 | — | The well's DAILY oil allowable in barrels, before any transfer and before the field's production factor. Positive on 3,161,682 of the 7,543,198 cycles; zero is a real zero, not a blank. e.g. 113 | — |
| 12 |
gas_limit
|
integer measured in MCF/d | 46-49 | — | Casinghead gas the well may produce per day, in MCF. Exceeding it is what curtails an oil well's oil. e.g. 16000 | — |
| 13 |
gas_oil_ratio
|
integer measured in cf/bbl | 50-52 | — | Gas-oil ratio in cubic feet per barrel, used to test that limit. e.g. 2588 | — |
| 14 |
cycle_remark
|
text | 53-82 | — | Thirty characters of remark printed on the operator's supplement when the cycle's allowable is a recalculation. Null where the copybook's zeros mean 'no remark'. | — |
| 15 |
original_oil_in_place
|
integer measured in bbl | 83-86 | — | Barrels determined to have been in the reservoir at discovery, set at a productive-acreage hearing: acres x thickness x porosity x (1 - water saturation) / formation value factor. | — |
| 16 |
allowable_code
|
text | 87-88 | — | Proration status for the cycle: 01 prorated allowable (4,355,056 cycles), 00 no allowable (3,163,707), 06 marginal, 08 exempt, 07 discovery, 03 not producing but eligible. e.g. 01 | — |
| 17 |
allow_limited_code
|
text | 89 | — | Why the allowable is held below what the well is eligible for: 1 insufficient production history, 2 the well's potential, 3 excessive gas-oil ratio, 4 the water it produces, 5 excessive water-oil ratio (East Texas only). | — |
| 18 |
type_well
|
text | 90-91 | — | The well's category this cycle, from appendix A: PR producing (4,287,697 cycles), SH shut-in (2,150,468), IN injection, NP no production reported, WS water supply, PP partial plug, OB observation, LP LPG storage, and the rest. e.g. PR | — |
| 19 |
sand_thickness
|
smallint measured in ft | 92-94 | — | Thickness of the producing zone in feet, where the allowable uses it. | — |
| 20 |
co_reg_depth_code
|
smallint | 95 | — | County-regular depth band, which sets the allowable instead of the true depth: 1 is 0-2,000 ft, 2 is 2,001-4,000, 3 is 4,001-6,000, 4 is 6,001-8,000, 5 is 8,001 and deeper. 0 is not a band. | — |
| 21 |
net_gor_code
|
text | 96 | — | Whether the well runs on a net gas-oil-ratio rule and which kind: 0 not on the rule, 1 on it with a special ratio, 2 with a maximum gas limit, 3 with no daily limit. | — |
| 22 |
net_gor
|
integer measured in cf/bbl | 97-99 | — | The ratio or amount the net gas-oil-ratio rule allows. | — |
| 23 |
special_allow_code
|
smallint | 100 | — | Whether a special allowable is assigned, and of what kind: 0 none, 1 subject to the production factor and not to be changed, 2 exempt from it and not to be changed, 3 top allowable prorated, 4 top allowable exempt. Special allowables usually go to nearly depleted or marginal wells. | — |
| 24 |
special_allow_amt
|
integer measured in bbl/d | 101-103 | — | The special allowable itself, in barrels per day. Wells in 'Z' allocation fields carry their top allowable here. | — |
| 25 |
code_14b2
|
text | 104 | — | The well's 14(b)(2) extension this cycle: 0 none granted, 1 in effect (prints as EXC 14B), 4 denied (14B DENY), 5 denied because of an H-15 violation. | — |
| 26 |
date_14b2_yyyymm
|
integer | 105-110 | — | Month the 14(b)(2) extension expires, as one YYYYMM integer. | — |
| 27 |
water_production
|
integer measured in bbl | 111-113 | — | Barrels of water produced with the oil during the W-2 or W-10 test. | — |
| 28 |
frozen_potential
|
integer measured in bbl/d | 114-116 | — | Yates-field potential held fixed for allowable purposes. | — |
| 29 |
producing_method
|
text | 117 | — | How the well was produced this cycle, as filed on the W-10: P pumping (3,715,440 cycles), G gas lift, F flowing, V vacuum, S steam injection, H secondary heat injection, B swabbing, C carbon dioxide, O other. Null on 2,565,285 cycles -- a well that is not producing -- and '0' on 281,288 more. e.g. G | — |
| 30 |
other_prod_method
|
text | 118-137 | — | Twenty characters spelling out the method where producing_method is 'O'. Null where the copybook's zeros mean unset. | — |
| 31 |
monthly_allowable
|
integer measured in bbl | 138-141 | — | The cycle's cumulative oil allowable in barrels -- the daily allowable times the days in the month, which is the figure the schedule prints. e.g. 3390 | — |
| 32 |
lowest_perforation
|
integer measured in ft | 142-144 | — | Depth of the deepest perforation in the casing, in feet. | — |
| 33 |
w10_exc_to_test_flag
|
text | 146 | — | The well's exception to periodic testing: 0 regular testing required, 1 no W-10 required, 2 no commingle test required (metered), 3 execute survey only, 4 partial commingle lease, 5 LACT with regular testing, 6 LACT exempt from commingle testing, 7 one month's delay allowed. | — |
| 34 |
test_date
|
date | 147-154 | — | Date of the most recent test on file -- an annual survey, a Form W-2, or a W-10 retest. e.g. 2026-02-26 | — |
| 35 |
retest_flag
|
text | 155 | — | 'Y' where that test date came from a W-10 retest. | — |
| 36 |
potential_12hr
|
integer measured in bbl | 156-158 | — | Twelve-hour potential, for Yates-field wells, which test for twelve hours rather than the usual twenty-four. | — |
| 37 |
bonus_code
|
text | 159 | — | Whether the well receives a bonus allowable: 0 none, 1 gas bonus, 2 oil bonus, 3 oil injection allowable bonus. | — |
| 38 |
bonus_amount
|
smallint measured in bbl/d | 160-162 | — | Barrels added to the allowable as a bonus. | — |
| 39 |
eb_flag
|
text | 163 | — | 'Y' where the allowable is to be cut back because of the well's production history. | — |
| 40 |
allow_pote_gor_chg_flag
|
text | 164 | — | What changed this cycle and may have moved the allowable: 0 nothing, 1 new allowable, 2 new potential, 3 new GOR, 4 GOR and potential, 5 GOR and allowable, 6 potential and allowable, 7 all three. | — |
| 41 |
csh_monthly_limit
|
integer measured in MCF | 165-169 | — | Most casinghead gas the well may be assigned for the month, in MCF. | — |
| 42 |
eb_change_month_flag
|
smallint | 170 | — | How many months running the allowable has been cut by the EB routine: 0 none, 1 first month, 2 second, 3 third. | — |
| 43 |
well_top
|
integer measured in bbl/d | 171-174 | — | The maximum oil allowable that can be assigned to a well in this field. | — |
| 44 |
panhandle_comp_code
|
text | 175 | — | Which guideline a Panhandle well used to show compliance with the field rules: 1 top of perforations at or below +250 ft, 2 average GOR under 5000:1 over twelve months, 3 an isolated 50-foot interval test, 4 a structurally anomalous area, 5 perforations below the gas wells within a mile, 6 under 20 MCF a day on the last test, 7 service well, 8 computer-set GOR under 5000:1, 9 a 14(b)(2) well, A computer-set version of 6, B shut-in, C excessive production, D hearing held, E sealed by Commission action, F lease shut in to make up casinghead production, N plugged well still on the ledger. '0' means no presumption of compliance has been established. | — |
| 45 |
panhandle_sub_code
|
text | 176 | — | Sub-code for a Panhandle well on compliance code 6 or A: P producing within the guideline, S shut in for a period after overproducing it. | — |
| 46 |
h15_violation_flag
|
text | 177 | — | 'Y' where the well has failed its H-15 fluid-level test or is delinquent in filing one. | — |
| 47 |
allocation_flag
|
text | 178 | — | 'Y' where the well feeds the field's allocation formula. The copybook declares it with a default of 'N'; the manual's notes never explain it. | — |
| 48 |
stack_lat_parentage
|
text | 179 | — | Stacked-lateral role: P parent well, C child well. Only the parent of a stacked lateral carries an allowable, and only the parent's lease has to file a PR, although the laterals may sit on several leases. | — |
wl_oil_sb126
6 columns
Documented here because RRC ships it in the same file. It is not in a download of this dataset.
| # | Column | Type | Bytes | RRC name | Meaning | Lookup |
|---|---|---|---|---|---|---|
| 1 |
wlroot_key
key
join
|
integer | — | — | The eight-digit RRC internal well id the row hangs off (WL-ROOT-KEY). Carried down from the 01 well root above it on the tape: the child segments have no key of their own. | — |
| 2 |
seq
key
|
integer | — | — | Ordinal of this segment under its parent, counting from 1 in tape order. EZRRC's, not RRC's -- the segment carries no search field, and the manual calls several of these non-recurring where the tape does not agree, so the ordinal is what keeps the primary key unique. | — |
| 3 |
cert_flag
|
text | 3 | — | Whether the well is certified for the Senate Bill 126 two-year inactive tax credit: A automatically, M manually, '0' not certified. | — |
| 4 |
cert_effective_yyyymm
|
integer | 4-9 | — | Month from which the well is certified to receive the tax credit, as one YYYYMM integer. | — |
| 5 |
cert_letter_date
|
date | 10-17 | — | Date RRC wrote to the operator saying the credit can be taken for this well's production. | — |
| 6 |
turnaround_letter_date
|
date | 18-25 | — | Date RRC wrote to say the credit COULD be taken if the operator asks for certification -- the invitation rather than the grant. | — |
wl_oil_sealed
7 columns
Documented here because RRC ships it in the same file. It is not in a download of this dataset.
| # | Column | Type | Bytes | RRC name | Meaning | Lookup |
|---|---|---|---|---|---|---|
| 1 |
wlroot_key
key
join
|
integer | — | — | The eight-digit RRC internal well id the row hangs off (WL-ROOT-KEY). Carried down from the 01 well root above it on the tape: the child segments have no key of their own. | — |
| 2 |
seq
key
|
integer | — | — | Ordinal of this segment under its parent, counting from 1 in tape order. EZRRC's, not RRC's -- the segment carries no search field, and the manual calls several of these non-recurring where the tape does not agree, so the ordinal is what keeps the primary key unique. | — |
| 3 |
sealed_effective_yyyymm
|
integer | 3-8 | — | Month the seal order took effect, as one YYYYMM integer. e.g. 198909 | — |
| 4 |
sealed_reason
|
text | 9-10 | — | Why the well was sealed: 01 delinquent production report, 02 discrepancies on it, 03 casinghead gas reported with no oil, 04 condensate with no gas well gas, 05 liquid overproduction, 06 gas overproduction, 07 delinquent forms, 08 condensate produced does not match condensate gathered, 09 delinquent H-10, 10 delinquent H-5, 11 failure to prove authority, 12 operator violations, 13 rule violations, 99 sealed before the database conversion and the reason is not known. '00' means no reason is recorded, which is what all seven rows of the August 2026 oil tape carry. e.g. 00 | — |
| 5 |
sealed_issue_date
|
date | 11-18 | — | Date RRC issued the seal order. | — |
| 6 |
sealed_issued_by
|
text | 19-20 | — | Which part of RRC sealed the well: PC production, PA proration, FO field operations, CA commingle audit, LE legal enforcement. | — |
| 7 |
seal_removed_date
|
date | 21-28 | — | Date the seal was removed. Null while the well is still sealed. | — |
wl_oil_transfer
7 columns
Documented here because RRC ships it in the same file. It is not in a download of this dataset.
| # | Column | Type | Bytes | RRC name | Meaning | Lookup |
|---|---|---|---|---|---|---|
| 1 |
wlroot_key
key
join
|
integer | — | — | The eight-digit RRC internal well id the row hangs off (WL-ROOT-KEY). Carried down from the 01 well root above it on the tape: the child segments have no key of their own. | — |
| 2 |
seq
key
|
integer | — | — | Ordinal of this segment under its parent, counting from 1 in tape order. EZRRC's, not RRC's -- the segment carries no search field, and the manual calls several of these non-recurring where the tape does not agree, so the ordinal is what keeps the primary key unique. | — |
| 3 |
transfer_from_to
|
text | 3 | — | Which way the allowable moves: 'T' this well is sending to the wells listed beside it, 'F' it is receiving from them. Both wells in a transfer carry a row pointing at the other. e.g. T | — |
| 4 |
max_can_recv
|
smallint measured in bbl/d | 4-7 | — | The most this well may receive per day by transfer, over and above its own allowable. | — |
| 5 |
oil_total_actual
|
smallint measured in bbl/d | 8-11 | — | Total oil allowable actually transferred, in barrels per day. e.g. 20 | — |
| 6 |
gas_total_actual
|
smallint measured in MCF/d | 12-15 | — | Total casinghead gas limit actually transferred. | — |
| 7 |
actual_transfer_type
|
text | 16 | — | Type of allowable transferred: P prorated, M marginal. e.g. 0 | — |
wl_oil_transfer_well
7 columns
Documented here because RRC ships it in the same file. It is not in a download of this dataset.
| # | Column | Type | Bytes | RRC name | Meaning | Lookup |
|---|---|---|---|---|---|---|
| 1 |
wlroot_key
key
join
|
integer | — | — | The eight-digit RRC internal well id the row hangs off (WL-ROOT-KEY). Carried down from the 01 well root above it on the tape: the child segments have no key of their own. | — |
| 2 |
transfer_seq
key
|
integer | — | — | Which transfer row of this well the counterparty hangs under -- its `seq`. | — |
| 3 |
seq
key
|
integer | — | — | Ordinal of this segment under its parent, counting from 1 in tape order. EZRRC's, not RRC's -- the segment carries no search field, and the manual calls several of these non-recurring where the tape does not agree, so the ordinal is what keeps the primary key unique. | — |
| 4 |
well_transferred_key
join
|
integer | 3-10 | — | The other well in the transfer, by its root key on this tape. e.g. 82717 | — |
| 5 |
transfer_type
|
text | 11 | — | What kind of allowable moved: 1 prorated, 2 exempt (called marginal in District 6E). e.g. 2 | — |
| 6 |
oil_transfer
|
smallint measured in bbl/d | 12-15 | — | Barrels of oil moved per day. Not included in the regular allowable on either side. e.g. 4 | — |
| 7 |
gas_transfer
|
smallint measured in MCF/d | 16-19 | — | Casinghead gas moved per day. e.g. 10 | — |
wl_oil_uic
8 columns
Documented here because RRC ships it in the same file. It is not in a download of this dataset.
| # | Column | Type | Bytes | RRC name | Meaning | Lookup |
|---|---|---|---|---|---|---|
| 1 |
wlroot_key
key
join
|
integer | — | — | The eight-digit RRC internal well id the row hangs off (WL-ROOT-KEY). Carried down from the 01 well root above it on the tape: the child segments have no key of their own. | — |
| 2 |
cycle_yyyymm
key
|
integer | — | — | The reporting cycle this row belongs to, as one YYYYMM integer, carried down from the reporting-cycle segment above it on the tape. | — |
| 3 |
seq
key
|
integer | — | — | Ordinal of this segment under its parent, counting from 1 in tape order. EZRRC's, not RRC's -- the segment carries no search field, and the manual calls several of these non-recurring where the tape does not agree, so the ordinal is what keeps the primary key unique. | — |
| 4 |
uic_control_no
join
|
integer | 3-11 | — | The UIC permit's control number -- the primary key of RRC's UIC database. Every one of the 1,170,867 oil rows resolves to a control number in the UIC Database dataset, across 45,177 distinct permits. e.g. 64064 | — |
| 5 |
h10_required_flag
|
text | 12 | — | Which annual survey this well owes: H or Y the H-10, Z the H-10H, W or N the W-10. e.g. H | — |
| 6 |
uic_status_date
|
date | 13-20 | — | Documented by the manual as not currently used, and null in every row. | — |
| 7 |
prev_h10_status
|
text | 21 | — | Documented by the manual as not currently used, and null in every row. | — |
| 8 |
roll_segment_flag
|
text | 22 | — | 'Y' where this UIC segment rolls forward with the next month when RRC advances its database a cycle. e.g. Y | — |
wl_oil_w10
21 columns
Documented here because RRC ships it in the same file. It is not in a download of this dataset.
| # | Column | Type | Bytes | RRC name | Meaning | Lookup |
|---|---|---|---|---|---|---|
| 1 |
wlroot_key
key
join
|
integer | — | — | The eight-digit RRC internal well id the row hangs off (WL-ROOT-KEY). Carried down from the 01 well root above it on the tape: the child segments have no key of their own. e.g. 415 | — |
| 2 |
seq
key
|
integer | — | — | Ordinal of this segment under its parent, counting from 1 in tape order. EZRRC's, not RRC's -- the segment carries no search field, and the manual calls several of these non-recurring where the tape does not agree, so the ordinal is what keeps the primary key unique. e.g. 1 | — |
| 3 |
cycle_yyyymm
|
integer | 3-6 | — | The cycle the test takes effect in, as one YYYYMM integer. The tape stores it as the historical ledger's 9927-based key (9530 means 2026-02, 397 months after January 1993); the loader decodes it, and day_key beside it is the raw second half of that key. e.g. 202602 | — |
| 4 |
day_key
|
smallint | 7-8 | — | The second half of RRC's W-10 key, which orders several tests filed in one month. The manual documents it as 99 minus the effective day; on the file it reads as the effective day plus one, so it is stored raw rather than decoded to a day. | — |
| 5 |
effective_date
|
date | 9-16 | — | Date the test was made effective for allowable purposes. e.g. 2026-02-01 | — |
| 6 |
type_status_flag
|
text | 17 | — | What kind of W-10 this is: I initial test, R retest, S survey, W Form W-2 filed, D dummy row used to initialise RRC's database. Surveys are the bulk of the file -- 528,953 of 609,334 -- and retests 71,816. e.g. S | — |
| 7 |
producing_method
|
text | 18 | — | How the well was being produced when tested: F flowing, P pumping, G gas lift, V vacuum, S steam injection, H secondary heat injection, B swabbing, C carbon dioxide, O other (spelled out in other_prod_method). e.g. P | — |
| 8 |
other_prod_method
|
text | 19-38 | — | The producing method written in, where producing_method is 'O'. The copybook's unset value is twenty literal zeros rather than blanks; those are stored as null. | — |
| 9 |
test_date
|
date | 39-46 | — | Date the well was actually tested, as filed on the W-10. e.g. 2025-11-10 | — |
| 10 |
daily_oil_bbl
|
numeric measured in bbl/d | 47-50 | — | Daily oil potential on the test, in barrels to one decimal place. The tape writes six digits with the point implied (PIC S9(5)V9), so 30 barrels arrives as '000300'; the loader restores the point. e.g. 0.1 | — |
| 11 |
daily_water_bbl
|
integer measured in bbl/d | 51-53 | — | Barrels of water produced on the test day. e.g. 10 | — |
| 12 |
daily_gas_mcf
|
integer measured in MCF/d | 54-57 | — | Gas produced during the potential test, in MCF per day. | — |
| 13 |
gas_oil_ratio
|
integer measured in cf/bbl | 58-60 | — | Gas-oil ratio in cubic feet per barrel. RRC curtails an oil well whose gas production runs past its daily gas limit, and this is the number that decides it. | — |
| 14 |
siwh_pressure
|
integer measured in psi | 61-64 | — | Shut-in wellhead pressure in PSI. The manual says the item is not currently used, and it is zero in almost every row. | — |
| 15 |
siwh_yyyymm
|
integer | 65-70 | — | Month the well was shut in, as one YYYYMM integer. Null while the well is producing; 55,760 of the 609,334 tests carry one. | — |
| 16 |
type_well
|
text | 77-78 | — | What a non-producing well is being used for, from the manual's appendix A: SH shut-in, PP partial plug, SM shut-in side of a multiple completion, WS water supply, IN injection, OB observation and the rest. '00' on 422,931 rows means the well is producing and the code does not apply. e.g. 00 | — |
| 17 |
issue_date
|
date | 85-92 | — | Date RRC processed the W-10. e.g. 2026-01-15 | — |
| 18 |
survey_counted_flag
|
text | 93 | — | 'Y' where the test counted as the annual survey. The copybook declares it; the manual's notes never explain it, and the file writes '0' where it is unset. | — |
| 19 |
filed_edi_flag
|
text | 94 | — | 'Y' where the operator filed the test electronically rather than on paper. | — |
| 20 |
allocation_flag
|
text | 95 | — | 'Y' where the test feeds the field's allocation formula. Declared in the copybook and never explained in the manual's notes. | — |
| 21 |
survey_2yr_counted_flag
|
text | 96 | — | 'Y' where the test counted as the two-year survey. Undocumented beyond the copybook, like survey_counted_flag. | — |
wl_oil_w10_prev
19 columns
Documented here because RRC ships it in the same file. It is not in a download of this dataset.
| # | Column | Type | Bytes | RRC name | Meaning | Lookup |
|---|---|---|---|---|---|---|
| 1 |
wlroot_key
key
join
|
integer | — | — | The eight-digit RRC internal well id the row hangs off (WL-ROOT-KEY). Carried down from the 01 well root above it on the tape: the child segments have no key of their own. | — |
| 2 |
w10_seq
key
|
integer | — | — | Which W-10 of the same well this hangs under -- the `seq` of the row in the W-10 table it shares an effective date with. | — |
| 3 |
seq
key
|
integer | — | — | Ordinal of this segment under its parent, counting from 1 in tape order. EZRRC's, not RRC's -- the segment carries no search field, and the manual calls several of these non-recurring where the tape does not agree, so the ordinal is what keeps the primary key unique. | — |
| 4 |
cycle_yyyymm
|
integer | 3-6 | — | The cycle the test takes effect in, as one YYYYMM integer. The tape stores it as the historical ledger's 9927-based key (9530 means 2026-02, 397 months after January 1993); the loader decodes it, and day_key beside it is the raw second half of that key. | — |
| 5 |
day_key
|
smallint | 7-8 | — | The second half of RRC's W-10 key, which orders several tests filed in one month. The manual documents it as 99 minus the effective day; on the file it reads as the effective day plus one, so it is stored raw rather than decoded to a day. | — |
| 6 |
effective_date
|
date | 9-16 | — | Date the test was made effective for allowable purposes. | — |
| 7 |
type_status_flag
|
text | 17 | — | What kind of W-10 this is: I initial test, R retest, S survey, W Form W-2 filed, D dummy row used to initialise RRC's database. Surveys are the bulk of the file -- 528,953 of 609,334 -- and retests 71,816. | — |
| 8 |
producing_method
|
text | 18 | — | How the well was being produced when tested: F flowing, P pumping, G gas lift, V vacuum, S steam injection, H secondary heat injection, B swabbing, C carbon dioxide, O other (spelled out in other_prod_method). | — |
| 9 |
other_prod_method
|
text | 19-38 | — | The producing method written in, where producing_method is 'O'. The copybook's unset value is twenty literal zeros rather than blanks; those are stored as null. | — |
| 10 |
test_date
|
date | 39-46 | — | Date the well was actually tested, as filed on the W-10. | — |
| 11 |
daily_oil_bbl
|
numeric measured in bbl/d | 47-50 | — | Daily oil potential on the test, in barrels to one decimal place. The tape writes six digits with the point implied (PIC S9(5)V9), so 30 barrels arrives as '000300'; the loader restores the point. | — |
| 12 |
daily_water_bbl
|
integer measured in bbl/d | 51-53 | — | Barrels of water produced on the test day. | — |
| 13 |
daily_gas_mcf
|
integer measured in MCF/d | 54-57 | — | Gas produced during the potential test, in MCF per day. | — |
| 14 |
gas_oil_ratio
|
integer measured in cf/bbl | 58-60 | — | Gas-oil ratio in cubic feet per barrel. RRC curtails an oil well whose gas production runs past its daily gas limit, and this is the number that decides it. | — |
| 15 |
siwh_pressure
|
integer measured in psi | 61-64 | — | Shut-in wellhead pressure in PSI. The manual says the item is not currently used, and it is zero in almost every row. | — |
| 16 |
siwh_yyyymm
|
integer | 65-70 | — | Month the well was shut in, as one YYYYMM integer. Null while the well is producing; 55,760 of the 609,334 tests carry one. | — |
| 17 |
type_well
|
text | 77-78 | — | What a non-producing well is being used for, from the manual's appendix A: SH shut-in, PP partial plug, SM shut-in side of a multiple completion, WS water supply, IN injection, OB observation and the rest. '00' on 422,931 rows means the well is producing and the code does not apply. | — |
| 18 |
issue_date
|
date | 85-92 | — | Date RRC processed the W-10. | — |
| 19 |
filed_edi_flag
|
text | 93 | — | 'Y' where the operator filed the test electronically rather than on paper. | — |
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 (internal number) 14 values
Read by district_no
RRC's internal sequential district numbering, 01 to 14 plus 20 for statewide. The production data, the UIC database and the high-cost gas certifications all use this. Internal 07 is District 6E, 08 is 7B, 09 is 7C, 10 is District 08, 11 is 8A, 13 is 09 and 14 is District 10. There is no internal 12.
| Code | Means |
|---|---|
01 |
District 01 — San Antonio (internal 01) Internal district number 01, which RRC prints as District 01 and administers from San Antonio. |
02 |
District 02 — San Antonio (internal 02) Internal district number 02, which RRC prints as District 02 and administers from San Antonio. |
03 |
District 03 — Houston (internal 03) Internal district number 03, which RRC prints as District 03 and administers from Houston. |
04 |
District 04 — Corpus Christi (internal 04) Internal district number 04, which RRC prints as District 04 and administers from Corpus Christi. |
05 |
District 05 — Kilgore (internal 05) Internal district number 05, which RRC prints as District 05 and administers from Kilgore. |
06 |
District 06 — Kilgore (internal 06) Internal district number 06, which RRC prints as District 06 and administers from Kilgore. |
07 |
District 6E — Kilgore (internal 07) Internal district number 07, which RRC prints as District 6E and administers from Kilgore. |
08 |
District 7B — Abilene (internal 08) Internal district number 08, which RRC prints as District 7B and administers from Abilene. |
09 |
District 7C — San Angelo (internal 09) Internal district number 09, which RRC prints as District 7C and administers from San Angelo. |
10 |
District 08 — Midland (internal 10) Internal district number 10, which RRC prints as District 08 and administers from Midland. |
11 |
District 8A — Midland (internal 11) Internal district number 11, which RRC prints as District 8A and administers from Midland. |
13 |
District 09 — Wichita Falls (internal 13) Internal district number 13, which RRC prints as District 09 and administers from Wichita Falls. |
14 |
District 10 — Pampa (internal 14) Internal district number 14, which RRC prints as District 10 and administers from Pampa. |
20 |
District 20 — State Wide (internal 20) Internal district number 20, which RRC prints as District 20 and administers from State Wide. |
Source: Generated from texas.pdq_gp_district.district_no
Oil or gas schedule 2 values
Read by oil_gas_code
Which schedule a lease is carried on. This is not decoration: an oil lease number and a gas lease number can be the same digits and mean different leases, so a lease key is only unique with this code and the district in it.
| Code | Means |
|---|---|
O |
Oil Carried on the oil proration schedule; lease numbers are oil lease numbers. |
G |
Gas Carried on the gas proration schedule; lease numbers are gas well IDs. |
Source: PDQ Dump user manual; values confirmed as the complete distinct set in texas.pdq_og_lease_cycle.oil_gas_code
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.
Statewide Oil Well Database joins to PDQ Well Completion Directory on Wlroot key = Well root number — one row here matches one row there.
is PDQ's well completion
The one join that gets an API number out of this tape. PDQ's well_root_no is the same RRC internal well id as WL-ROOT-KEY, zero-padded to eight characters, and it resolves for 293,022 of the 293,069 oil wells -- one PDQ completion each, never more. The row it lands on carries api_county_code and api_unique_no, the county name, and PDQ's own district/lease/well 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.
statewide-oil-well-database.wlroot_key = pdq-well-completion.well_root_no
Statewide Oil Well Database joins to PDQ Regulatory Lease Directory on District number and Lease number — many rows here share a single row there.
is on the lease
From the well to its lease's directory entry, which is where the operator number, the operator name, the field number and the lease name are -- none of which is on this tape. 293,049 of the 293,069 wells resolve, one lease each. Restrict the PDQ side to oil_gas_code = 'O'. Without it the join returns 311,664 rows instead of 293,049: a gas well ID and an oil lease number can be the same digits in the same district, and 18,615 of them are. Both sides write RRC's INTERNAL district number, so no translation is needed here -- unlike the W-10 and G-10 status files, which print the designation. 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.
statewide-oil-well-database.district_no = pdq-regulatory-lease-directory.district_no AND statewide-oil-well-database.lease_no = pdq-regulatory-lease-directory.lease_no
Statewide Oil Well Database joins to PDQ Lease Summary (master) on District number and Lease number — rows can match many rows in both directions.
produced on the lease
From the well to what its lease actually produced, so a tested potential and an allowable can be read beside the volumes. 293,045 of the 293,069 wells match, but the summary carries one row per lease per operator and field, so the 293,045 wells produce 1,068,412 pairs -- aggregate, or pick the operator you mean. Restrict the PDQ side to oil_gas_code = 'O'; gas wells carry their RRC ID in the same lease_no column. 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.
statewide-oil-well-database.district_no = pdq-lease-summary.district_no AND statewide-oil-well-database.lease_no = pdq-lease-summary.lease_no
Statewide Oil Well Database joins to Certificate of Authorization P-4 (Oil and Gas) on District number = District number and Lease number = Lease rrcid — many rows here share a single row there.
has these oil wells
From the lease's P-4 to the wells on it. Read from the well database's side this is all but total: 84,070 of its 84,071 distinct leases find a P-4 lease. Read from this side it is a third -- 84,070 of 253,517 oil leases -- because the well database holds only leases currently on the proration schedule and this tape is the whole history, 310,496 of its leases having been removed. Among the oil leases still ON the schedule, 84,045 of 97,482 match. Restrict this side to oil_gas_code = 'O'. Both files write RRC's internal district number, so the districts agree without translation; the well database stores it as a smallint and this tape as text. 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.
p4-certificate-of-authorization.district_no = statewide-oil-well-database.district_no AND p4-certificate-of-authorization.lease_rrcid = statewide-oil-well-database.lease_no
Statewide Oil Well Database joins to Statewide Production Data — Oil on District number = District and Lease number = Lease number — many rows here share a single row there.
is the lease whose scheduled wells are
From the lease that files the P-1 to the WELLS on it: the well database is one row per well on the oil proration schedule, 293,069 of them over 84,071 leases, with the well and unit numbers, the 14(b)(2) and shut-in flags and the removal history that nothing on the production tape carries. 2,402 of 5,000 sampled leases match. The gap is not a key problem: the well database holds the leases currently ON the schedule -- on_off_sched_ind is 'N' on all 293,069 rows -- and the production database holds every lease that has reported inside 26 months, which is a much larger set. This is the ONE family outside PDQ whose district means the same thing as this tape's: WLA001K writes the internal number too, so the districts line up and nothing has to be translated. 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.
statewide-production-data-oil.district = statewide-oil-well-database.district_no AND statewide-production-data-oil.lease_no = statewide-oil-well-database.lease_no
Statewide Oil Well Database joins to Historical Ledger — Statewide Oil on District number = District and Lease number = Lease number — many rows here share a single row there.
is the lease whose scheduled wells are
From the lease that filed the P-1 to the WELLS on it: the well database is one row per well on the oil proration schedule, with the well and unit numbers, the 14(b)(2) and shut-in flags and the removal history that nothing on this tape carries. 79,301 of the 158,566 leases match. The gap is not a key problem: the well database holds the leases currently ON the schedule, and this tape holds every lease that reported in any month since 1993 -- half of them have since left. WLA001K writes the same internal district number this tape does, which is why the district is carried here and cannot be carried into the proration ledger or the W-10. 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.
historical-ledger-oil.district = statewide-oil-well-database.district_no AND historical-ledger-oil.lease_no = statewide-oil-well-database.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.wl_oil_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.