Oil Ledger — Wells
Queryable EBCDIC
Every oil well on the proration schedule, with its depth, status and last test.
Get the data
Heads up on Original: the Commission does not publish this table on its own. It publishes Oil Ledger, which this was parsed out of — so Original gets you that whole file, not just this table. Every other format is this table alone.
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
The WELL records of OLA013K: 207,544 rows, one per well on a lease that takes well allowables. Each carries the well's total depth and lowest perforation, how it is produced -- flowing, pumping, gas lift -- its completion date, the date of its last W-10 test, its standing under the plugging rule, and the special allowables, bonuses and exceptions attached to it.
Wells inside a multi-well group are NOT here: they are on the Oil Detail Well tape. Measured against production, none of 5,000 sampled detail wells appears in this table, which is the design rather than a gap.
What you can do with it
Find every well in a field or on a lease with its depth and producing method, see which wells are shut in and under what exception, and read the date of the last test that set each well's allowable.
Gotchas
well_no is right-justified in six bytes: 174,528 of the 207,544 rows carry leading blanks, so well 1 is stored as ' 1'. Two wells can differ only in their padding, which is why it is kept. Trim before joining anywhere.
The district is the ledger's spelling (06E, 07B, 07C, 08A). Against the W-10 file, 2,869 of 5,000 sampled wells match on the district as it stands and 3,769 once the leading zero is stripped and the well number trimmed -- the rest have no test in the W-10's rolling window.
pump carries a 'B' on 228 wells, which OLA013K does not document, and sub_well carries an 'S' on 51. The manual's own lists are in the column descriptions; those two values are not in them.
completion_date is null on 305 wells whose eight digits do not make a date, and the earliest parsed value is 1900-01-03, itself a placeholder. For a Yates-field well those bytes hold the unit potential rather than a date, which is why completion_date_raw is kept beside it.
ex14b2_type and ex14b2_app_no are empty in every row of the current tape.
Record layout
41 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_ledger_well
41 columns
| # | Column | Type | Bytes | RRC name | Meaning | Lookup |
|---|---|---|---|---|---|---|
| 1 |
district
key
join
|
text | 2-4 | WELL-REC-DIST |
RRC district the well is in, as the ledger tape writes it: 01-06, 06E, 07B, 07C, 08, 08A, 09, 10. 50,492 of the 207,544 wells are in the lettered four, which the W-10 and PDQ write without the leading zero. e.g. 01 | RRC district (proration ledger spelling) |
| 2 |
field_no
key
join
|
integer | 5-12 | WELL-REC-FIELD |
The eight-digit field number the well produces from. e.g. 2001 | — |
| 3 |
operator_no
key
join
|
integer | 13-18 | WELL-REC-OPR |
P-5 organization number of the lease operator. e.g. 893 | — |
| 4 |
lease_no
key
join
|
integer | 19-23 | WELL-REC-LEASE |
The five-digit oil lease number the well is on. e.g. 19016 | — |
| 5 |
offshore
|
smallint | 26 | WELL-REC-OFFSHORE |
Land, bay, offshore or a combination, on the field record's code list. | — |
| 6 |
well_no
key
|
text | 27-32 | WELL-NO |
The operator's well number, six bytes and positional: the tape right-justifies it and the loader keeps the leading blanks while dropping the trailing ones, so well 1 arrives as ' 1' and 1H as ' 1H'. 174,528 of the 207,544 rows are padded. They are kept because two wells can differ only in their padding. Trim before joining to the W-10 file or to PDQ. e.g. ' 1' | — |
| 7 |
type_well
|
text | 33 | W-TYPE-WELL |
Status of the well as it prints on the schedule: P prorated (128,731 rows), S shut-in (41,631), E shut-in with a 14(B)(2) exception (36,400), M marginal, X exempt, A abandoned, N new pooled exempt, and also D disposal, G gas injection and W water injection. e.g. S | — |
| 8 |
unit_no
|
text | 34 | UNIT-NO-I |
Unit letter for a Yates-field well, redefining the first byte of the reservoir name. The August 2026 tape holds '0' on 203,909 wells, blank on 3,631 and a real 'A' on four -- read it as unused outside Yates. | — |
| 9 |
unit_value
|
numeric | 35-38 | UNIT-VALUE |
The Yates unit's productive potential relative to the field's other units, one whole number and three decimals. Non-zero on four wells. | — |
| 10 |
w_key
|
smallint | 39 | W-KEY |
Depth band of the well, or 9 for a key well whose potential represents the field: 1 to 2,000 feet, 2 to 4,000, 3 to 6,000, 4 to 8,000, 5 deeper. One key well in the whole August 2026 tape. | — |
| 11 |
county_code
|
smallint | 40-42 | W-COUNTY |
The three-digit county code the well is in. | — |
| 12 |
pump
|
text | 43 | PUMP |
How the well produces: 0 flowing (80,183 rows), 1 pumping (103,337), 2 gas lift (19,503), 3 gas lift under a 10,000:1 exception, 4 vacuum, 5 casing leak, 6 designate well, 7 receiving well, 8 water well shut down. The tape also carries 'B' on 228 wells, which OLA013K does not list. e.g. 0 | — |
| 13 |
special_allow_code
|
smallint | 44 | W-SP-CODE |
What kind of special allowable the well has, if any: 1 subject to the production factor and fixed, 2 exempt and fixed (817 rows), 3 the field top allowable prorated, 4 the field top allowable exempt. | — |
| 14 |
special_allow_amt
|
smallint measured in bbl/d | 45-48 | W-SP-AMT |
The special allowable amount in barrels per day. Fields on 'Z' allocation carry their top allowable here. | — |
| 15 |
net_gor_code
|
smallint | 49 | W-N-CODE |
Whether the well is on the net gas-oil ratio rule and how: 1 a special ratio, 2 a special daily amount, 3 unlimited, 4 based on acreage, 0 not on the rule. | — |
| 16 |
net_gor_amt
|
integer measured in cf/bbl | 50-54 | W-N-AMT |
The ratio or volume allowed under the net gas-oil ratio rule. | — |
| 17 |
depth
|
integer measured in ft | 55-59 | W-DEPTH |
Total depth of the well in feet. Non-zero on 188,812 of 207,544 wells; the deepest in the August 2026 tape is 25,515 feet. e.g. 4280 | — |
| 18 |
sand
|
smallint measured in ft | 60-62 | SAND |
Thickness in feet of the producing zone, used only where the allocation formula needs it. For a Yates well it holds the number of wells in the unit instead. Non-zero on 216 wells. | — |
| 19 |
frozen_potential
|
integer measured in bbl/d | 63-67 | FROZEN |
The well's original potential in barrels per day, which does not change with production -- used where potential is part of the field's allocation formula. It also holds the rounded working potential when the month's potential column reads 9999.9. Non-zero on 4,362 wells. | — |
| 20 |
perf
|
integer measured in ft | 68-72 | PERF |
Depth in feet of the lowest perforation, which is the depth the allowable is calculated from. For Yates and Hastings West wells it holds the working potential instead when the month's potential reads 9999.9. | — |
| 21 |
completion_date
|
date | 73-80 | W-DATE |
Date the operator reported the well complete. Null in 305 rows where the tape's eight digits do not make a date; for a Yates well these bytes hold the unit potential rather than a date, which is why completion_date_raw is kept beside it. The earliest parsed value is 1900-01-03, itself a placeholder. e.g. 2017-01-04 | — |
| 22 |
completion_date_raw
|
integer | 73-80 | W-DATE |
The completion date exactly as the tape carried it, CCYYMMDD as an integer. Read this when completion_date is null. | — |
| 23 |
ex14b_code
|
text | 81 | EX-14B-CD |
The well's standing under Statewide Rule 14(B)(2), which requires an abandoned well to be plugged: 0 no exception (148,623 rows), 1 exception in effect (40,371), 4 denied, plus the newer letters the tape carries -- H an H-15 violation (6,937), P partially plugged, B the inactive side of a multiple completion, L a legal violation. e.g. 4 | — |
| 24 |
sub_well
|
text | 82 | W-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 (9,928 rows), 0 not shut in. The tape also carries 'S' on 51 wells, which the manual does not list. | — |
| 25 |
no_prod_code
|
smallint | 83 | W-NO-PROD-CD |
Why the allowable was cut: 1 a delinquent P-1, 2 no production (20,511 rows), 0 neither. | — |
| 26 |
delq_form
|
smallint | 84 | W-DELQ-FORM |
1 when the well is shut in because of a delinquent form. | — |
| 27 |
test_eff
|
text | 85 | W-TST-EFF |
Month the well's W-10 becomes effective: 1-9 January to September, A, B, C October to December, 0 none. The commonest value in the August 2026 tape is A, on 38,052 wells. e.g. 1 | — |
| 28 |
exc_test
|
smallint | 86 | W-EXC-TST |
The well's exception to the testing its lease owes: 0 regular test (188,008 rows), 1 no W-10 required, 2 no commingle test, 3 no survey, 4 commingle test required on a partially commingled lease, 5 the one-well-lease exception (16,399). | — |
| 29 |
water
|
smallint measured in bbl | 87-90 | W-WATER |
Barrels of water produced with the oil on the well's test, usually over 24 hours. | — |
| 30 |
ex14b_yyyymm
|
integer | 91-96 | EX-14B-DATE |
Month the well's 14(B)(2) exception expires, CCYYMM. Set on 52,344 wells. | — |
| 31 |
remarks
|
text | 97-111 | W-RMKS |
Fifteen characters of schedule remarks about the well, from an analyst or generated by RRC's own programs. Set on 119,845 wells. | — |
| 32 |
bonus_code
|
smallint | 112 | BONUS-CD |
Whether the well gets a bonus allowable on top of its calculated one: 1 gas bonus, 2 oil bonus, 3 oil injection allowable, 0 none. Twenty-two wells in the whole August 2026 tape. | — |
| 33 |
bonus_amt
|
smallint measured in bbl/d | 113-115 | BONUS |
The daily bonus allowable in barrels or MCF, per bonus_code. | — |
| 34 |
max_transfer
|
smallint measured in bbl/d | 116-118 | FROZTSF |
The largest daily allowable transfer the well may receive on top of its own, in barrels. Non-zero on twelve wells. | — |
| 35 |
water_ratio_exc
|
smallint | 119 | W-WLSD |
9 when a District 6E well has an exception to the East Texas field's water-oil ratio rule. Twenty-two wells. | — |
| 36 |
test_date
|
date | 120-127 | W-TST-DT |
Date of the last W-10 test filed for the well. Present on 205,705 of 207,544 wells, ranging from 1973 to July 2026. e.g. 2020-06-01 | — |
| 37 |
date_last_utilized_yyyymm
|
integer | 128-133 | W-DTE-LST-UTL |
Month a shut-in well was last used, CCYYMM. Set on 16,052 wells. | — |
| 38 |
new_wellbore_exc
|
text | 134 | W-NEW-WB-EXC |
'Y' when a Panhandle well qualifies as a new wellbore and may produce twice the daily gas maximum for two years from its pipeline connection. 2,724 wells. | — |
| 39 |
new_wellbore_connect_date
|
date | 135-142 | W-NEW-WB-CONNECT-DATE |
Date of the new wellbore's gas pipeline connection. | — |
| 40 |
ex14b2_type
|
text | 143 | W-14B2-TYPE-COVERAGE |
How the well's 14(B)(2) exception is covered: B a blanket bond, M a mini-bond, S a single lease, R a secondary recovery project, W a W-1X, N none. Blank in every row of the August 2026 tape. | — |
| 41 |
ex14b2_app_no
|
integer | 144-149 | W-14B2-APP-NO |
Application number of the 14(B)(2) coverage, RRC's key into its own exception database. Zero in every row of 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 (proration ledger spelling) 14 values
Read by 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 Ledger — Wells joins to Oil Ledger — Well Months on District and Field number and Operator number and Lease number and Well number — one row here matches many rows there.
has fourteen months of allowable
The W-MONTH group of the well record: the well's monthly oil and gas allowable, its acres and potential, its gas-oil ratio and whether its W-10 was late. All 5,000 sampled wells match. Both sides carry the well number with the tape's leading blanks, so no trimming is needed -- inside this family only.
oil-ledger-wells.district = oil-ledger-well-months.district AND oil-ledger-wells.field_no = oil-ledger-well-months.field_no AND oil-ledger-wells.operator_no = oil-ledger-well-months.operator_no AND oil-ledger-wells.lease_no = oil-ledger-well-months.lease_no AND oil-ledger-wells.well_no = oil-ledger-well-months.well_no
Oil Ledger — Wells 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 on the well record resolved to the operator directory. All 5,000 sampled wells resolve; both columns are integers.
oil-ledger-wells.operator_no = p5-organization-ascii.id
Oil Ledger — Wells 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
From a scheduled well to the API-numbered completions PDQ carries for its lease -- the hop that gets an oil ledger well an API number, which no ledger tape holds. 3,752 of 5,000 sampled wells match at lease level as the columns stand, and all 5,000 once the district's leading zero is stripped. It stops at the lease deliberately. Adding the well number matches every one of 5,000 sampled wells, but only after trimming: the ledger right-justifies the well number in six bytes and PDQ does not. 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-ledger-wells.district = pdq-well-completion.district_name AND oil-ledger-wells.lease_no = pdq-well-completion.lease_no
Oil Ledger — Wells joins to Oil Ledger — Leases on District and Field number and Operator number and Lease number — many rows here share a single row there.
has the wells
From a lease to the wells that carry its allowable. 4,111 of 5,000 sampled leases have well records; the ones that do not are on lease allowables through a multi-well group, and their wells are on the detail-well tape instead.
oil-ledger-leases.district = oil-ledger-wells.district AND oil-ledger-leases.field_no = oil-ledger-wells.field_no AND oil-ledger-leases.operator_no = oil-ledger-wells.operator_no AND oil-ledger-leases.lease_no = oil-ledger-wells.lease_no
Oil Ledger — Wells joins to Oil Ledger on District and Field number — many rows here share a single row there.
contains the wells
Every scheduled oil well in the field. 1,582 of 5,000 sampled fields have at least one; the rest have no leases either, or have only multi-well groups, whose wells are on the detail-well tape.
oil-ledger.district = oil-ledger-wells.district AND oil-ledger.field_no = oil-ledger-wells.field_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, with the oil ledger.)
- RRC download link
- GoAnywhere MFT
- Record layout manual
- Our table
texas.oil_ledger_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.