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.

Preview the first 100 rows

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.

Record layout for pd_gas_well — 7 columns, with byte positions
# 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.

Record layout for pd_gas_balancing — 8 columns, with byte positions
# 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.

Record layout for pd_gas_commingle — 6 columns, with byte positions
# 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.

Record layout for pd_gas_cycle — 26 columns, with byte positions
# 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.

Record layout for pd_gas_disposition — 6 columns, with byte positions
# 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.

Record layout for pd_gas_prev_report — 10 columns, with byte positions
# 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.

Record layout for pd_gas_production — 23 columns, with byte positions
# 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.

Record layout for pd_gas_reinstated_underage — 6 columns, with byte positions
# 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.

Record layout for pd_gas_remark — 10 columns, with byte positions
# 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.

Record layout for pd_gas_sep_extract_loss — 5 columns, with byte positions
# 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.

RRC district (internal number) — 14 codes and their meanings
CodeMeans
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.