Statewide Production Data — Gas
Queryable EBCDIC
The live P-2 world: every gas well's allowable, production, dispositions and flaring remarks, 26 months deep.
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
PDA001, the gas half: PDF101, the same 102-byte EBCDIC tape structure for gas. 232,028 WELLS by RRC gas id, each with the last 26 reporting CYCLES, and on every cycle the P-2 production report, the gas and condensate dispositions by code, the commingle permit, the balancing-period status and the remarks -- ten tables in all.
Two things here exist nowhere else on the site. The first is the wet/dry distinction: gas_prod_mcf is the WET volume RRC charges against the allowable, and dry_gas_mcf on pd_gas_sep_extract_loss is what is left after lease separation -- the figure PDQ publishes as lease_gas_prod_vol, identical on 119,974 of the 120,106 wells matched in cycle 202506. Wet minus the code-9 disposition equals the dry figure exactly on all 30,366 wells that had a separation loss that month. The second is flaring: 166,972 of the 189,101 remarks hang off a code-4 (vented or flared) disposition and say why.
Like the oil tape, it is ahead of PDQ -- allowables through 202608, P-2s through 202606, against PDQ rows for those months that are all zero.
What you can do with it
Put a gas well's allowable beside what it produced, follow 1,238,315 pipeline deliveries and 166,991 vented-or-flared dispositions across the state, read the operator's own explanation for the flaring, and find the 34,967 well-months inside a balancing period working off an imbalance.
Gotchas
THE GAS ALLOWABLE IS TRUNCATED. balancing_allow_amt is a three-byte packed S9(5) on the tape where the 2005 manual documents nine digits, so anything of 100,000 MCF or more wraps: RRC id 298707 in cycle 202506 reads 92,883 here and 492,883 in PDQ's lease_gas_allow. 120,673 of 140,202 wells agree outright in cycle 202606, and 1,273 of the 1,331 whose real allowable is six digits agree modulo 100,000. Take the allowable from PDQ when the number matters.
THE DISTRICT IS THE INTERNAL NUMBER, 01-14, exactly as on the oil tape and exactly as PDQ writes district_no: 08 here is District 7B, 10 is District 08, 11 is 8A. The gas tape has no district 07 because 6E is an oil-only district. Joining this column to the gas proration ledger or the G-10, which write the printed designation, matches the wrong districts.
A download from this page is texas.pd_gas_well, one row per well with its opening balances. The nine child tables are documented in the record layout below, and the schema marks which one the download carries.
The window rolls -- RRC drops the oldest month every cycle -- and the two newest cycles carry an allowable with no P-2 behind them yet: 202607 and 202608 on the August 2026 tape have no production row at all.
Much of the gas cycle record is dead weight from the 1980s and the column descriptions say which: highest_daily_cycles, except_high_day_amount, reduced_rate, past_production_cycles, except_past_prod_amount, liquid_cumu_cycle_status, g9_plant_liquid and g9_injection_amount are zero in all 3,680,141 cycles, every discrepancy-removal flag on the production report is 'N', and pd_gas_reinstated_underage is EMPTY -- the August 2026 tape carries no 20 records. It is published anyway so the month RRC writes one, it appears.
Two allowable codes on the tape are not in the manual's appendix: '(' on 134,388 cycles and '¢' on 230, while the appendix's '*' and '@' never appear. Treat those two as unexplained.
Record layout
107 columns. Byte positions are 1-based and come from the RRC record layout, so you can check our decoding against the original file yourself.
pd_gas_well
7 columns
This is the table you get when you download or query Statewide Production Data — Gas.
| # | Column | Type | Bytes | RRC name | Meaning | Lookup |
|---|---|---|---|---|---|---|
| 1 |
district
key
join
|
text | 4-5 | PD-GAS-DISTRICT |
RRC district as an INTERNAL district number, 01 to 14 -- not the designation the industry prints. The manual's own conversion table reads 07 = 6E (oil only), 08 = 7B, 09 = 7C, 10 = District 08, 11 = 8A, 12 = 8B (not used, and absent here), 13 = 09 and 14 = District 10. It is the same spelling PDQ writes in district_no, and it is NOT the spelling the proration ledgers, the W-10 or the G-10 use: on those, '08' means District 08, and here it means 7B. e.g. 01 | RRC district (internal number) |
| 2 |
gas_rrc_id
key
join
|
integer | 6-11 | PD-GAS-RRC-ID |
The well's RRC gas identifier as a whole number. Unique statewide -- 232,028 wells, 232,028 distinct ids -- so unlike the oil lease number it can be joined on by itself. e.g. 298707 | — |
| 3 |
gas_code
|
text | 3 | PD-GAS-CODE |
The tape's record marker, 'G' for a gas well, on all 232,028 rows. The oil tape writes 'O' in the same byte. e.g. G | — |
| 4 |
gas_oldest_eom_balance
|
integer measured in MCF | 12-16 | PD-GAS-OLDEST-EOM-BALANCE |
Gas overproduction or underproduction, in MCF, carried into the oldest cycle the tape still holds. Non-zero on 6,104 wells and negative on some of them: an underage is a well that produced less than its allowable. | — |
| 5 |
cond_oldest_eom_balance
|
integer measured in bbl | 17-21 | PD-COND-OLDEST-EOM-BALANCE |
Condensate in stock at the end of the oldest month on the tape, in barrels. Non-zero on 50,022 wells. e.g. 0 | — |
| 6 |
liquid_oldest_eom_balance
|
integer measured in bbl | 22-26 | PD-LIQUID-OLDEST-EOM-BALANCE |
Plant liquids at the end of the oldest month on the tape, in barrels. Zero on every one of the 232,028 wells -- RRC no longer carries a plant-liquid balance on this segment. e.g. 0 | — |
| 7 |
undoc_packed_27
|
integer | 27-30 | — | An undocumented four-byte packed value at byte 27, where the 2005 manual has FILLER. Non-zero on about 1.7% of wells. Upstream kept it rather than discarding it, and nobody knows what it counts -- do not read it as a quantity. e.g. 941679 | — |
pd_gas_balancing
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 |
district
key
join
|
text | — | — | RRC district as an INTERNAL district number, 01 to 14 -- not the designation the industry prints. The manual's own conversion table reads 07 = 6E (oil only), 08 = 7B, 09 = 7C, 10 = District 08, 11 = 8A, 12 = 8B (not used, and absent here), 13 = 09 and 14 = District 10. It is the same spelling PDQ writes in district_no, and it is NOT the spelling the proration ledgers, the W-10 or the G-10 use: on those, '08' means District 08, and here it means 7B. | RRC district (internal number) |
| 2 |
gas_rrc_id
key
join
|
integer | — | — | The well's RRC gas identifier as a whole number. Unique statewide -- 232,028 wells, 232,028 distinct ids -- so unlike the oil lease number it can be joined on by itself. | — |
| 3 |
cycle_yyyymm
key
join
|
integer | — | — | The reporting cycle this row belongs to, as a whole number: 202606 is June 2026. The tape carries 26 of them, 202407 through 202608, and drops the oldest each month. | — |
| 4 |
seq
key
|
smallint | — | — | File order of the balancing record inside the cycle. It is 1 on every one of the 34,967 rows. | — |
| 5 |
balancing_period_status
|
integer measured in MCF | 3-7 | PD-GAS-BALANCING-PERIOD-STATUS |
Where the well stands inside its balancing period, in MCF: positive is overproduction, negative an underage. Non-zero on 2,803 of the 34,967 rows. A balancing period is the run of months a gas well gets to work off an imbalance, and only wells inside one appear here at all -- 34,967 rows against 3.68 million cycles. | — |
| 6 |
cancelled_underage
|
integer measured in MCF | 8-12 | PD-GAS-CANCELLED-UNDERAGE |
Underage the Commission cancelled at the end of the period, in MCF. Non-zero on 402 rows and never positive: an underage cancelled is production the well no longer gets to make up. | — |
| 7 |
off_file_bal_per_status
|
integer measured in MCF | 13-17 | PD-GAS-OFF-FILE-BAL-PER-STATUS |
The balancing-period status as it stood on the off-file record, in MCF. Zero on every row of the August 2026 tape. | — |
| 8 |
off_file_cum_overage
|
integer measured in MCF | 18-22 | PD-GAS-OFF-FILE-CUM-OVERAGE |
Cumulative overage on that off-file record, in MCF. Zero on every row. | — |
pd_gas_commingle
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 |
district
key
join
|
text | — | — | RRC district as an INTERNAL district number, 01 to 14 -- not the designation the industry prints. The manual's own conversion table reads 07 = 6E (oil only), 08 = 7B, 09 = 7C, 10 = District 08, 11 = 8A, 12 = 8B (not used, and absent here), 13 = 09 and 14 = District 10. It is the same spelling PDQ writes in district_no, and it is NOT the spelling the proration ledgers, the W-10 or the G-10 use: on those, '08' means District 08, and here it means 7B. | RRC district (internal number) |
| 2 |
gas_rrc_id
key
join
|
integer | — | — | The well's RRC gas identifier as a whole number. Unique statewide -- 232,028 wells, 232,028 distinct ids -- so unlike the oil lease number it can be joined on by itself. | — |
| 3 |
cycle_yyyymm
key
join
|
integer | — | — | The reporting cycle this row belongs to, as a whole number: 202606 is June 2026. The tape carries 26 of them, 202407 through 202608, and drops the oldest each month. | — |
| 4 |
cmg_seq
key
|
smallint | — | — | File order of the commingle permit inside the cycle. It is 1 on every one of the 1,139,745 rows: a gas well reports under at most one permit in a month, where an oil lease can carry fourteen. 658 wells do change permit somewhere across the 26 cycles. | — |
| 5 |
commingle_district
join
|
text | 3-4 | PD-GAS-COMMINGLE-DISTRICT |
District of the commingle permit, in the same internal numbering as the well's own district. | RRC district (internal number) |
| 6 |
commingle_no
join
|
integer | 5-9 | PD-GAS-COMMINGLE-NUMBER |
The commingle permit number, 1 to 50,369. 7,173 distinct permits appear across the window. | — |
pd_gas_cycle
26 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 |
district
key
join
|
text | — | — | RRC district as an INTERNAL district number, 01 to 14 -- not the designation the industry prints. The manual's own conversion table reads 07 = 6E (oil only), 08 = 7B, 09 = 7C, 10 = District 08, 11 = 8A, 12 = 8B (not used, and absent here), 13 = 09 and 14 = District 10. It is the same spelling PDQ writes in district_no, and it is NOT the spelling the proration ledgers, the W-10 or the G-10 use: on those, '08' means District 08, and here it means 7B. e.g. 01 | RRC district (internal number) |
| 2 |
gas_rrc_id
key
join
|
integer | — | — | The well's RRC gas identifier as a whole number. Unique statewide -- 232,028 wells, 232,028 distinct ids -- so unlike the oil lease number it can be joined on by itself. e.g. 298707 | — |
| 3 |
cycle_yyyymm
key
join
|
integer | 3-8 | PD-GAS-REPORT-CYCLE-KEY |
The reporting cycle this row belongs to, as a whole number: 202606 is June 2026. The tape carries 26 of them, 202407 through 202608, and drops the oldest each month. e.g. 202506 | — |
| 4 |
balancing_allow_amt
|
integer measured in MCF | 9-11 | PD-GAS-BALANCING-ALLOW-AMT |
The well's allowable for the cycle in MCF -- but only its LOW FIVE DIGITS. The tape carries a three-byte packed S9(5) where the 2005 manual documents nine digits, so an allowable of 100,000 or more wraps: 10,663,427 arrives as 63,427. Checked against PDQ for cycle 202606, 120,673 of 140,202 wells agree outright, and of the 1,331 whose PDQ allowable is 100,000 or more, 1,273 agree modulo 100,000. Use pdq-lease-cycle's lease_gas_allow when you need the whole figure. e.g. 92883 | — |
| 5 |
balancing_allow_code
|
text | 12-13 | PD-GAS-BALANCING-ALLOW-CODE |
What kind of allowable it is, from the manual's appendix: blank producing with no exception (42,540 cycles), A plugged, C cycling, D disposal, H shut-in, I injection, J temporarily abandoned, K shut-in under an exception to 14(b)(2) (826,736), L limited to the highest daily production of the last twelve months, N special allowable by administrative action (1,463,688), O delinquent G-10 status report, R deliverability plus overage, S special allowable granted at hearing, T incomplete G-10, U limited with underage allowed, W withheld pending forms, X exempt (939,862), Z not eligible, # restricted to the daily production test, % plugged with condensate on hand, > delinquent P-2. Two codes on the tape are not in the appendix -- '(' on 134,388 cycles and '¢' on 230 -- while the appendix's '*' (up to twice average production) and '@' (limited to top production) never appear. That is the shape of an EBCDIC national-variant difference between the printer that set the manual and the tape, so treat those two as unexplained rather than as the codes they sit beside. e.g. X | — |
| 6 |
exception_twice_allow
|
text | 14 | PD-GAS-EXCEPTION-TWICE-ALLOW |
Whether the well has the exception that lets it produce up to twice its allowable. 'N' on every one of the 3,680,141 cycles. | — |
| 7 |
highest_daily_cycles
|
smallint | 15 | PD-GAS-HIGHEST-DAILY-CYCLES |
How many cycles the highest-daily-production limit runs for. Zero in every row of the August 2026 tape -- the item is in the 1980s copybook and RRC no longer writes it. | — |
| 8 |
except_high_day_amount
|
integer measured in MCF | 16-20 | PD-GAS-EXCEPT-HIGH-DAY-AMOUNT |
The highest daily production the limit is computed from, in MCF. Zero in every row of the August 2026 tape -- the item is in the 1980s copybook and RRC no longer writes it. | — |
| 9 |
reduced_rate
|
smallint | 21-23 | PD-GAS-REDUCED-RATE |
The reduced rate the well is held to. Zero in every row of the August 2026 tape -- the item is in the 1980s copybook and RRC no longer writes it. | — |
| 10 |
reduced_rate_code
|
text | 24 | PD-GAS-REDUCED-RATE-CODE |
How many cycles the reduced rate runs for, '1' to '6'. The tape writes '0' in every one of the 3,680,141 cycles. | — |
| 11 |
cond_ending_balance
|
integer measured in bbl | 25-29 | PD-COND-ENDING-BALANCE |
Condensate in stock at the end of the cycle, in barrels. Non-zero on 1,288,829 cycles. | — |
| 12 |
g9_injection_amount
|
integer measured in MCF | 30-34 | PD-G9-INJECTION-AMOUNT |
Gas injected under a G-9 permit, in MCF. Zero in every row of the August 2026 tape -- the item is in the 1980s copybook and RRC no longer writes it. | — |
| 13 |
cumu_cycle_status
|
integer measured in MCF | 35-39 | PD-GAS-CUMU-CYCLE-STATUS |
The well's cumulative gas status at the end of the cycle, in MCF: positive is overproduction, negative an underage. Non-zero on 122,530 cycles, from -1,808,944 to 7,170,197. e.g. 0 | — |
| 14 |
cumulative_overage
|
integer measured in MCF | 40-44 | PD-GAS-CUMULATIVE-OVERAGE |
Cumulative overage in MCF. The tape writes all nines while a well is inside a balancing period and that is NULL here, on 308 cycles. Non-zero on 115,032. | — |
| 15 |
overage_transfer
|
integer measured in MCF | 45-49 | PD-GAS-OVERAGE-TRANSFER |
Overage moved onto or off the well by the Commission, in MCF. Non-zero on 64 cycles of 3.68 million. | — |
| 16 |
no_past_production_flag
|
text | 50 | PD-GAS-NO-PAST-PRODUCTION-FLAG |
'Y' where there is no past production to compute an allowable from: 3,680,115 of 3,680,141 cycles, against 26 that say 'N'. Read it as 'this test is not in use' rather than as a fact about the well. | — |
| 17 |
no_highest_daily_flag
|
text | 51 | PD-GAS-NO-HIGHEST-DAILY-FLAG |
'Y' where there is no highest-daily-production figure to limit the well to. Also 3,680,115 of 3,680,141, matching the flag above. | — |
| 18 |
cancel_underage_flag
|
text | 52 | PD-GAS-CANCEL-UNDERAGE-FLAG |
Whether an underage was cancelled, and when relative to the ledger run: 'N' none, 'Y', 'A' after the ledger, 'B' before it. 'N' on every cycle of this tape. | — |
| 19 |
past_production_cycles
|
smallint | 53 | PD-GAS-PAST-PRODUCTION-CYCLES |
How many cycles the past-production exception runs for. Zero in every row of the August 2026 tape -- the item is in the 1980s copybook and RRC no longer writes it. | — |
| 20 |
except_past_prod_amount
|
integer measured in MCF | 54-58 | PD-GAS-EXCEPT-PAST-PROD-AMOUNT |
The past production the exception is computed from, in MCF. Zero in every row of the August 2026 tape -- the item is in the 1980s copybook and RRC no longer writes it. | — |
| 21 |
liquid_cumu_cycle_status
|
integer measured in bbl | 59-63 | PD-LIQUID-CUMU-CYCLE-STATUS |
Cumulative plant-liquid status, in barrels. Zero in every row of the August 2026 tape -- the item is in the 1980s copybook and RRC no longer writes it. | — |
| 22 |
g9_plant_liquid
|
integer measured in bbl | 64-68 | PD-G9-PLANT-LIQUID |
Plant liquid credited under a G-9 permit, in barrels. Zero in every row of the August 2026 tape -- the item is in the 1980s copybook and RRC no longer writes it. | — |
| 23 |
g9_injection_credit_code
|
text | 69 | PD-G9-INJECTION-CREDIT-CODE |
What a G-9 injection credit is for: 0 none, 1 injection, 2 gas lift, 3 bank balance. '0' on all 3,642,332 cycles that carry it, and blank -- NULL here -- on the other 37,809. | — |
| 24 |
on_shut_in_list_flag
|
text | 70 | PD-GAS-ON-SHUT-IN-LIST-FLAG |
Whether the well is on RRC's shut-in list. The tape leaves it blank on all but 2,193 cycles, and those 2,193 say '0'. Nothing on this tape says a well IS on the list. | — |
| 25 |
well_capability
|
integer measured in MCF | 71-75 | PD-WELL-CAPABILITY |
What the well is capable of producing for the cycle, in MCF. Non-zero on 1,874,315 cycles, up to 72,384. e.g. 4295 | — |
| 26 |
well_monthly_capability
|
integer | 76-80 | PD-WELL-MONTHLY-CAPABILITY |
The monthly capability figure that goes with it. Non-zero on only 54,597 cycles and never above 15, which is not a gas volume: read it beside well_capability rather than on its own. | — |
pd_gas_disposition
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 |
district
key
join
|
text | — | — | RRC district as an INTERNAL district number, 01 to 14 -- not the designation the industry prints. The manual's own conversion table reads 07 = 6E (oil only), 08 = 7B, 09 = 7C, 10 = District 08, 11 = 8A, 12 = 8B (not used, and absent here), 13 = 09 and 14 = District 10. It is the same spelling PDQ writes in district_no, and it is NOT the spelling the proration ledgers, the W-10 or the G-10 use: on those, '08' means District 08, and here it means 7B. e.g. 01 | RRC district (internal number) |
| 2 |
gas_rrc_id
key
join
|
integer | — | — | The well's RRC gas identifier as a whole number. Unique statewide -- 232,028 wells, 232,028 distinct ids -- so unlike the oil lease number it can be joined on by itself. e.g. 298707 | — |
| 3 |
cycle_yyyymm
key
join
|
integer | — | — | The reporting cycle this row belongs to, as a whole number: 202606 is June 2026. The tape carries 26 of them, 202407 through 202608, and drops the oldest each month. e.g. 202506 | — |
| 4 |
disposition_type
key
|
text | — | — | Which segment the row came from: 'gas' is record 16 and the amount is MCF (3,722,567 rows); 'cond' is record 17 and the amount is barrels of condensate (698,939). The two code lists differ, so read the code with this column. e.g. gas | — |
| 5 |
disposition_code
key
|
smallint | 3-4 | PD-GAS-DISP-CODE |
Where it went. Gas (16): 1 lease and field fuel, 2 transmission line, 3 processing plant, 4 vented or flared, 5 gas lift, 6 repressure, 7 carbon black, 8 underground storage, 9 well separation extraction loss, 99 reported with no code. Condensate (17): 0 pipeline, 1 truck, 2 tank car or barge, 3 tank cleaning, 4 circulating oil, 5 lost, 6 sedimentation, 7 other, 8 skim, 9 scrubber, 10 stock adjustment, 99 no code. Gas code 9 is the one to know: 710,249 rows of it, and the wet production minus code 9 is exactly the dry figure PDQ publishes. e.g. 9 | — |
| 6 |
amount
|
integer | 5-9 | PD-GAS-DISP-AMT |
MCF for a gas disposition, barrels for a condensate one. A condensate stock adjustment may be negative; the smallest on the tape is -48 barrels. e.g. 14339 | — |
pd_gas_prev_report
10 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 |
district
key
join
|
text | — | — | RRC district as an INTERNAL district number, 01 to 14 -- not the designation the industry prints. The manual's own conversion table reads 07 = 6E (oil only), 08 = 7B, 09 = 7C, 10 = District 08, 11 = 8A, 12 = 8B (not used, and absent here), 13 = 09 and 14 = District 10. It is the same spelling PDQ writes in district_no, and it is NOT the spelling the proration ledgers, the W-10 or the G-10 use: on those, '08' means District 08, and here it means 7B. | RRC district (internal number) |
| 2 |
gas_rrc_id
key
join
|
integer | — | — | The well's RRC gas identifier as a whole number. Unique statewide -- 232,028 wells, 232,028 distinct ids -- so unlike the oil lease number it can be joined on by itself. | — |
| 3 |
cycle_yyyymm
key
join
|
integer | — | — | The reporting cycle this row belongs to, as a whole number: 202606 is June 2026. The tape carries 26 of them, 202407 through 202608, and drops the oldest each month. | — |
| 4 |
seq
key
|
smallint | — | — | File order of this previous report inside the cycle, 1 upwards and as high as 26. | — |
| 5 |
prev_posting_yyyymm
|
integer | 3-8 | PD-GAS-PREV-POSTING-DATE |
The month the superseded report was posted, as a whole number. | — |
| 6 |
prev_posting_date
|
date | 3-10 | PD-GAS-PREV-POSTING-DATE |
The full posting date of the superseded report, where the tape gave a day. Null where it did not. | — |
| 7 |
prev_batch_no
|
text | 11-13 | PD-GAS-PREV-BATCH-NUMBER |
RRC's batch number for the superseded report. | — |
| 8 |
prev_item_no
|
integer | 14-17 | PD-GAS-PREV-ITEM-NUMBER |
Item number of the superseded report inside that batch. | — |
| 9 |
changed_flag
|
text | 18 | PD-GAS-PREV-CHANGED-FLAG |
'C' where the figures changed. The tape leaves it blank on every row of this file, so the column is NULL throughout: it does not tell you whether a refiling changed anything. | — |
| 10 |
filed_by_edi
|
text | 19 | PD-GAS-PREV-FILED-BY-EDI-FLAG |
'Y' where the superseded report had been filed electronically. | — |
pd_gas_production
23 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 |
district
key
join
|
text | — | — | RRC district as an INTERNAL district number, 01 to 14 -- not the designation the industry prints. The manual's own conversion table reads 07 = 6E (oil only), 08 = 7B, 09 = 7C, 10 = District 08, 11 = 8A, 12 = 8B (not used, and absent here), 13 = 09 and 14 = District 10. It is the same spelling PDQ writes in district_no, and it is NOT the spelling the proration ledgers, the W-10 or the G-10 use: on those, '08' means District 08, and here it means 7B. e.g. 01 | RRC district (internal number) |
| 2 |
gas_rrc_id
key
join
|
integer | — | — | The well's RRC gas identifier as a whole number. Unique statewide -- 232,028 wells, 232,028 distinct ids -- so unlike the oil lease number it can be joined on by itself. e.g. 298707 | — |
| 3 |
cycle_yyyymm
key
join
|
integer | — | — | The reporting cycle this row belongs to, as a whole number: 202606 is June 2026. The tape carries 26 of them, 202407 through 202608, and drops the oldest each month. e.g. 202506 | — |
| 4 |
gas_prod_mcf
|
integer measured in MCF | 3-7 | PD-GAS-PROD |
Gas the operator reported on Form P-2 for the month, in MCF, WET: it includes the gas equivalent of the condensate that lease separation takes out, because that is the volume charged against the allowable. It is NOT the figure PDQ publishes -- dry_gas_mcf on pd_gas_sep_extract_loss is. Non-zero on 1,988,361 of the 2,812,122 reports; the biggest month on the tape is 10,663,427 MCF. e.g. 492883 | — |
| 5 |
lift_gas_injected_mcf
|
integer measured in MCF | 8-12 | PD-GAS-LIFT-GAS-INJECTED |
Gas injected back for gas lift, in MCF. Zero in every one of the 2,812,122 rows of the August 2026 tape. | — |
| 6 |
cond_prod_bbl
|
integer measured in bbl | 13-17 | PD-COND-PROD |
Condensate produced with the gas, in barrels. Non-zero on 726,409 reports. e.g. 13035 | — |
| 7 |
batch_no
|
text | 18-20 | PD-GAS-BATCH-NUMBER |
RRC's internal batch number for the bundle of reports this one was keyed in with. Useful for tracing a filing inside the Commission, not for anything about the lease. | — |
| 8 |
item_no
|
integer | 21-24 | PD-GAS-ITEM-NUMBER |
The report's item number inside that batch, 1 to 9999. RRC internal. | — |
| 9 |
posting_yyyymm
|
integer | 25-30 | PD-GAS-POSTING-DATE |
The month the report was posted, as a whole number. The tape usually gives the month with a day of 00, which is why the month is kept here beside a date that can be null. | — |
| 10 |
posting_date
|
date | 25-32 | PD-GAS-POSTING-DATE |
The full posting date, where the tape gave a day: 1,916,057 of the 2,812,122 rows. Null on the rest, which carry a day of 00 -- the month is still in posting_yyyymm. | — |
| 11 |
removed_flaring
|
text | 33 | PD-G-REMOVED-FLARING-DISCREP |
'Y' where a production clerk removed a flaring discrepancy from RRC's discrepancy listing, 'N' where no action was taken. 'N' on every row of the August 2026 tape: the whole flag block is carried and none of it is set. | — |
| 12 |
removed_sealed
|
text | 34 | PD-G-REMOVED-SEALED-DISCREP |
'Y' where a production clerk removed production from a sealed well from RRC's discrepancy listing, 'N' where no action was taken. 'N' on every row of the August 2026 tape: the whole flag block is carried and none of it is set. | — |
| 13 |
removed_h8
|
text | 35 | PD-G-REMOVED-H-8-DISCREP |
'Y' where a production clerk removed an H-8 discrepancy from RRC's discrepancy listing, 'N' where no action was taken. 'N' on every row of the August 2026 tape: the whole flag block is carried and none of it is set. | — |
| 14 |
removed_circ_oil
|
text | 36 | PD-G-REMOVED-CIRC-OIL-DISCREP |
'Y' where a production clerk removed a circulating-oil discrepancy from RRC's discrepancy listing, 'N' where no action was taken. 'N' on every row of the August 2026 tape: the whole flag block is carried and none of it is set. | — |
| 15 |
removed_other
|
text | 37 | PD-G-REMOVED-OTHER-DISCREP |
'Y' where a production clerk removed an 'other' discrepancy from RRC's discrepancy listing, 'N' where no action was taken. 'N' on every row of the August 2026 tape: the whole flag block is carried and none of it is set. | — |
| 16 |
removed_code4
|
text | 38 | PD-G-REMOVED-CODE4-DISCREP |
'Y' where a production clerk removed a code-4 (vented or flared) discrepancy from RRC's discrepancy listing, 'N' where no action was taken. 'N' on every row of the August 2026 tape: the whole flag block is carried and none of it is set. | — |
| 17 |
corrected_report_flag
|
text | 39 | PD-GAS-CORRECTED-REPORT-FLAG |
'Y' where this is a corrected P-2 rather than the original filing: 400,191 of the 2,812,122 reports. e.g. N | — |
| 18 |
removed_code_6
|
text | 40 | PD-G-REMOVED-CODE-6-DISCREP |
'Y' where a production clerk removed a code-6 discrepancy from RRC's discrepancy listing, 'N' where no action was taken. 'N' on every row of the August 2026 tape: the whole flag block is carried and none of it is set. | — |
| 19 |
filed_by_edi
|
text | 41 | PD-GAS-FILED-BY-EDI-FLAG |
'Y' where the P-2 arrived electronically: 2,806,092 of 2,812,122. Only 6,030 came in on paper. e.g. Y | — |
| 20 |
removed_well_prod
|
text | 42 | PD-G-REMOVED-WELL-PROD-DISCREP |
'Y' where a production clerk removed a well-production discrepancy from RRC's discrepancy listing, 'N' where no action was taken. 'N' on every row of the August 2026 tape: the whole flag block is carried and none of it is set. | — |
| 21 |
removed_con_ext_l
|
text | 43 | PD-G-REMOVED-CON-EXT-L-DISCREP |
'Y' where a production clerk removed a condensate extraction-loss discrepancy from RRC's discrepancy listing, 'N' where no action was taken. 'N' on every row of the August 2026 tape: the whole flag block is carried and none of it is set. | — |
| 22 |
removed_con_insuf
|
text | 44 | PD-G-REMOVED-CON-INSUF-DISCREP |
'Y' where a production clerk removed an insufficient-condensate discrepancy from RRC's discrepancy listing, 'N' where no action was taken. 'N' on every row of the August 2026 tape: the whole flag block is carried and none of it is set. | — |
| 23 |
removed_code_3
|
text | 45 | PD-G-REMOVED-CODE-3-DISCREP |
Whether a code-3 (processing plant) discrepancy was removed. 'N' on every row. The copybook prints this flag and the two before it all at byte 44; the file writes one flag per byte from 42 to 45, and the loader follows the file. | — |
pd_gas_reinstated_underage
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 |
district
key
join
|
text | — | — | RRC district as an INTERNAL district number, 01 to 14 -- not the designation the industry prints. The manual's own conversion table reads 07 = 6E (oil only), 08 = 7B, 09 = 7C, 10 = District 08, 11 = 8A, 12 = 8B (not used, and absent here), 13 = 09 and 14 = District 10. It is the same spelling PDQ writes in district_no, and it is NOT the spelling the proration ledgers, the W-10 or the G-10 use: on those, '08' means District 08, and here it means 7B. | RRC district (internal number) |
| 2 |
gas_rrc_id
key
join
|
integer | — | — | The well's RRC gas identifier as a whole number. Unique statewide -- 232,028 wells, 232,028 distinct ids -- so unlike the oil lease number it can be joined on by itself. | — |
| 3 |
cycle_yyyymm
key
join
|
integer | — | — | The reporting cycle this row belongs to, as a whole number: 202606 is June 2026. The tape carries 26 of them, 202407 through 202608, and drops the oldest each month. | — |
| 4 |
seq
key
|
smallint | — | — | File order of the reinstatement inside the cycle. | — |
| 5 |
begin_yyyymm
|
integer | 3-8 | PD-GAS-REIN-UNDG-BEG-DATE-KEY |
The month the reinstated underage began, as a whole number. The table is EMPTY: the August 2026 tape carries no 20 PDGREIN records at all, so this layout comes from the manual and nothing has been read through it. | — |
| 6 |
reinstated_amt
|
integer measured in MCF | 9-13 | PD-GAS-REINSTATED-UNDG-AMOUNT |
The underage put back on the well, in MCF. No rows -- see begin_yyyymm. | — |
pd_gas_remark
10 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 |
district
key
join
|
text | — | — | RRC district as an INTERNAL district number, 01 to 14 -- not the designation the industry prints. The manual's own conversion table reads 07 = 6E (oil only), 08 = 7B, 09 = 7C, 10 = District 08, 11 = 8A, 12 = 8B (not used, and absent here), 13 = 09 and 14 = District 10. It is the same spelling PDQ writes in district_no, and it is NOT the spelling the proration ledgers, the W-10 or the G-10 use: on those, '08' means District 08, and here it means 7B. | RRC district (internal number) |
| 2 |
gas_rrc_id
key
join
|
integer | — | — | The well's RRC gas identifier as a whole number. Unique statewide -- 232,028 wells, 232,028 distinct ids -- so unlike the oil lease number it can be joined on by itself. | — |
| 3 |
seq
key
|
integer | — | — | File order of the remark within the well, across both remark records. One well carries 263 of them. | — |
| 4 |
remark_type
|
text | — | — | Which record the remark came off: 'well' is the 22 PDREMARK segment hanging off the well itself (22,129 rows); 'gas_disposition' is a 25 remark on a vented-or-flared disposition (166,972); 'cond_disposition' is the 26 remark on a condensate disposition, of which the August 2026 tape carries none. 17,919 of the 232,028 wells carry any remark. | — |
| 5 |
cycle_yyyymm
join
|
integer | — | — | The cycle the remark is about, on the 166,972 disposition remarks. Null on a well remark, which is not tied to a month. | — |
| 6 |
disposition_code
|
smallint | — | — | The disposition the remark explains. It is 4 -- vented or flared -- on every one of the 166,972 disposition remarks: RRC requires a reason for flaring, and this is where the reason is. | — |
| 7 |
remark_no
|
smallint | 3-5 | PD-REMARK-NUMBER |
RRC's remark number on a well remark, 950 to 999 here. Null on disposition remarks. | — |
| 8 |
line_no
|
smallint | 6-7 | PD-REMARK-LINE-NO |
Line within the well remark, 1 to 14. | — |
| 9 |
remark_date
|
date | 3-10 | PD-GAS-DSP-RMK-DATE |
Date on a disposition remark, 2024-08-28 to 2026-08-05. Null on well remarks. The copybook lists MM DD CC YY at byte 3; the file writes CCYYMMDD and the loader follows the file. | — |
| 10 |
remark_text
|
text | 8-77 | PD-REMARK-TEXT |
The remark itself, and on this tape it is mostly the flaring explanation: 166,972 of the 189,101 rows hang off a code-4 disposition. A well remark is 70 characters at byte 8 and a disposition remark 40 at byte 11, so the position in the layout below is the well remark's. Null on 119 rows. | — |
pd_gas_sep_extract_loss
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 |
district
key
join
|
text | — | — | RRC district as an INTERNAL district number, 01 to 14 -- not the designation the industry prints. The manual's own conversion table reads 07 = 6E (oil only), 08 = 7B, 09 = 7C, 10 = District 08, 11 = 8A, 12 = 8B (not used, and absent here), 13 = 09 and 14 = District 10. It is the same spelling PDQ writes in district_no, and it is NOT the spelling the proration ledgers, the W-10 or the G-10 use: on those, '08' means District 08, and here it means 7B. e.g. 01 | RRC district (internal number) |
| 2 |
gas_rrc_id
key
join
|
integer | — | — | The well's RRC gas identifier as a whole number. Unique statewide -- 232,028 wells, 232,028 distinct ids -- so unlike the oil lease number it can be joined on by itself. e.g. 298707 | — |
| 3 |
cycle_yyyymm
key
join
|
integer | — | — | The reporting cycle this row belongs to, as a whole number: 202606 is June 2026. The tape carries 26 of them, 202407 through 202608, and drops the oldest each month. e.g. 202506 | — |
| 4 |
dry_gas_mcf
|
integer measured in MCF | 3-11 | PD-GAS-DRY-GAS-AMOUNT |
The dry gas volume in MCF: what is left once lease separation has taken the condensate out. This is the number PDQ publishes as lease_gas_prod_vol -- for cycle 202506, identical on 119,974 of the 120,106 wells matched -- while gas_prod_mcf beside it is the wet volume RRC charges against the allowable. Wet minus the code-9 disposition equals this exactly on all 30,366 wells that had a separation loss in that cycle. e.g. 478544 | — |
| 5 |
extract_loss_factor
|
numeric | 12-16 | PD-GAS-EXTRACT-LOSS-FACTOR |
The factor RRC applies to turn separated liquid back into a gas volume, to three decimal places. It is 0.110 on every one of the 2,812,122 rows of the August 2026 tape. e.g. 0.110 | — |
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, district, commingle_district, district, district, district, district, district, district, district, district
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
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 Production Data — Gas joins to PDQ Regulatory Lease Directory on District = District number and Gas RRC ID = Lease number — one row here matches one row there.
is the regulatory lease
The gas well's name, operator and field, none of which is on this tape. 4,995 of 5,000 sampled wells match. Restrict PDQ to oil_gas_code = 'G'. 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-gas.district = pdq-regulatory-lease-directory.district_no AND statewide-production-data-gas.gas_rrc_id = pdq-regulatory-lease-directory.lease_no
Statewide Production Data — Gas joins to PDQ Lease Production by Cycle on District = District number and Gas RRC ID = Lease number — one row here matches many rows there.
produced, by month
PDQ carries a gas well as a lease keyed on the same RRC id, so this is the same join as the oil one and scores the same way: 4,775 of 5,000 sampled wells match. Two figures here are worth crossing. lease_gas_prod_vol is the DRY volume, identical to dry_gas_mcf on 119,974 of the 120,106 wells matched in cycle 202506 -- not to gas_prod_mcf, which is wet. And lease_gas_allow is the allowable in full, where this tape's balancing_allow_amt keeps only its low five digits. Restrict PDQ to oil_gas_code = 'G': 76 of 5,000 sampled wells collide with an oil lease of the same number in the same district. 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-gas.district = pdq-lease-cycle.district_no AND statewide-production-data-gas.gas_rrc_id = pdq-lease-cycle.lease_no
Statewide Production Data — Gas joins to Statewide Gas Well Database on District = District number and Gas RRC ID = Gas RRC ID — one row here matches one row there.
is the scheduled well
The same hop for gas, and one-to-one: the gas well database is one row per RRC id, 138,901 of them, all on schedule. 2,963 of 5,000 sampled wells match, and exactly as many match on the id alone -- the district is carried here because it agrees, not because it is needed. It is the route from a well's allowable and production to its survey, its 14(b)(2) status and its removal history. 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-gas.district = statewide-gas-well-database.district_no AND statewide-production-data-gas.gas_rrc_id = statewide-gas-well-database.gas_rrc_id
Statewide Production Data — Gas joins to Gas Ledger — Wells on Gas RRC ID — many rows here share a single row there.
is scheduled in the gas proration ledger as
From the live production record to the schedule that set the allowable, and the only edge on this family that reaches a proration tape at all. 3,025 of 5,000 sampled wells match: the ledger holds the wells currently on schedule, and the production database holds every well that has reported inside 26 months. It is declared on the RRC id ALONE, deliberately. The two files spell the district in different vocabularies -- this one writes the internal number and the ledger writes 07B and 08A -- so a join carrying it would be wrong, not merely narrow: on the columns as they stand it matches 1,502 of 5,000, and some of those are other districts' wells. The id is unique statewide (232,028 wells, 232,028 ids), so nothing is lost by dropping the district, and 3,025 is exactly what district-plus-id scores once the spelling is converted. Both columns are integers, so no cast is needed.
statewide-production-data-gas.gas_rrc_id = gas-ledger-wells.gas_rrc_id
Statewide Production Data — Gas joins to PDQ Lease Summary (master) on District = District number and Gas RRC ID = Lease number — one row here matches many rows there.
has a production summary
The first and last cycles PDQ holds gas production for. 4,775 of 5,000 sampled wells match, and more than one row can come back: the summary is keyed on the well AND its operator and field, so a well that changed hands has a row for each. Restrict to oil_gas_code = 'G'. 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-gas.district = pdq-lease-summary.district_no AND statewide-production-data-gas.gas_rrc_id = pdq-lease-summary.lease_no
Statewide Production Data — Gas joins to PDQ Well Completion Directory on District = District number and Gas RRC ID = Lease number — one row here matches one row there.
is the well whose completion is
From the gas id to PDQ's completion record and its API number. 4,988 of 5,000 sampled wells match, and exactly one row comes back for each: all 231,690 gas keys in PDQ's completion directory carry a single row, because a gas 'lease' there IS one well. The oil edge above is the same join and one-to-many, because an oil lease has several. Restrict to oil_gas_code = 'G'. 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-gas.district = pdq-well-completion.district_no AND statewide-production-data-gas.gas_rrc_id = pdq-well-completion.lease_no
Statewide Production Data — Gas joins to Gas Well Status (26 Month G-10) on Gas RRC ID = RRC ID — one row here matches many rows there.
was tested on the G-10 as
The deliverability tests behind the allowable. 1,028 of 5,000 sampled wells match, and the ceiling is the G-10 file rather than the key: the copy RRC publishes was cut in late 2021 and holds no test after November of that year, so most wells reporting today have no row in it. On the id alone, for the same reason as the ledger edge above -- the G-10 writes the printed district (7B, 8A) and this tape writes the internal number. Both columns are integers.
statewide-production-data-gas.gas_rrc_id = gas-well-status-g10.rrc_id
Statewide Production Data — Gas joins to Historical Ledger — Statewide Gas on District and Gas RRC ID — one row here matches one row there.
continues into the live production database
The other half of the same well. This tape ends at cycle 202406 and PDA001 begins at 202407 -- no overlapping month, no gap -- so the two together run from January 1993 to last month. 219,315 of the 219,384 wells here are in the live database; the 69 that are not have reported nothing inside its 26-month window. The handover is checkable on the condensate: this tape's 202406 cond_eom_balance is pd_gas_well.cond_oldest_eom_balance on 141,267 of the 141,466 wells that reported that month. Same types on both sides, so no cast is needed.
historical-ledger-gas.district = statewide-production-data-gas.district AND historical-ledger-gas.gas_rrc_id = statewide-production-data-gas.gas_rrc_id
Statewide Production Data — Gas joins to Certificate of Authorization P-4 (Oil and Gas) on District = District number and Gas RRC ID = Lease rrcid — one row here matches one row there.
reports production as
The same bridge for gas: 231,869 of the production tape's 232,028 gas wells find their P-4 lease. Internal district on both sides, as above. Restrict this side to oil_gas_code = 'G'.
p4-certificate-of-authorization.district_no = statewide-production-data-gas.district AND p4-certificate-of-authorization.lease_rrcid = statewide-production-data-gas.gas_rrc_id
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.pd_gas_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.