DEBUG: Raw major_slug = ""
DEBUG: Initial offers_url = "https://www.collegefactual.com/majors/construction-trades/carpenters/offers.json", major_slug = ""
DEBUG: After cleaning major_slug = ""
DEBUG: Before URL cleaning = "https://www.collegefactual.com/majors/construction-trades/carpenters/offers.json"
DEBUG: After TrimSuffix = "https://www.collegefactual.com/majors/construction-trades/carpenters/offers.json"
DEBUG: After HTTPS placeholder = "HTTPS_TEMP_PLACEHOLDERwww.collegefactual.com/majors/construction-trades/carpenters/offers.json"
DEBUG: After slash cleaning = "HTTPS_TEMP_PLACEHOLDERwww.collegefactual.com/majors/construction-trades/carpenters/offers.json"
DEBUG: After URL cleaning = "https://www.collegefactual.com/majors/construction-trades/carpenters/offers.json"
DEBUG: offers_url = https://www.collegefactual.com/majors/construction-trades/carpenters/offers.json
DEBUG: major_slug = ""
DEBUG: offers_url is valid, proceeding to fetch data
DEBUG: offers_data.offers found, count = 8
DEBUG: Specific major detected (cip4 = 46.02), keeping min_relevance at 0.8
DEBUG: Starting relevance filtering - min_relevance = 0.8, max_relevance = 1
DEBUG: Checking offer "Trade & Vocational Programs (Carpenter)" with relevance 1
DEBUG: ✓ Offer "Trade & Vocational Programs (Carpenter)" ACCEPTED (relevance 1)
DEBUG: Checking offer "Trade & Vocational Programs" with relevance 0.8
DEBUG: ✓ Offer "Trade & Vocational Programs" ACCEPTED (relevance 0.8)
DEBUG: Checking offer "Trade & Vocational Programs (Woodworker)" with relevance 0.8
DEBUG: ✓ Offer "Trade & Vocational Programs (Woodworker)" ACCEPTED (relevance 0.8)
DEBUG: Checking offer "MS in Management - Construction Management" with relevance 0.8
DEBUG: ✓ Offer "MS in Management - Construction Management" ACCEPTED (relevance 0.8)
DEBUG: Checking offer "Trade & Vocational Programs (Construction Trades)" with relevance 0.7
DEBUG: ✗ Offer "Trade & Vocational Programs (Construction Trades)" REJECTED (relevance 0.7)
DEBUG: Checking offer "Trade & Vocational Programs (Home Remodeling & Repair)" with relevance 0.7
DEBUG: ✗ Offer "Trade & Vocational Programs (Home Remodeling & Repair)" REJECTED (relevance 0.7)
DEBUG: Checking offer "Construction Management (I Have a HS Diploma or Associate Degree)" with relevance 0.5
DEBUG: ✗ Offer "Construction Management (I Have a HS Diploma or Associate Degree)" REJECTED (relevance 0.5)
DEBUG: Checking offer "Construction Management (I Have a Bachelors)" with relevance 0.5
DEBUG: ✗ Offer "Construction Management (I Have a Bachelors)" REJECTED (relevance 0.5)
DEBUG: relevant_offers count = 4
DEBUG: relevant_offers > 0, checking for ESYOH offers
DEBUG: ESYOH filtering - found 3 ESYOH offers with relevance >= 0.8
DEBUG: esyoh_offers count = 3
DEBUG: ESYOH offers found, rendering ESYOH widget
DEBUG: most_relevant_only = true, filtering for most relevant
DEBUG: Found 1 offers with relevance >= 1.0
Finding the Highest Paying Carpenters School for You
Where you study carpenters affects what graduates go on to earn. That is why we developed our Highest Paid Carpenters Graduates ranking. We rank each school on the early-career earnings of its carpenters graduates to surface the highest-paying programs.
Read more about our methodology
Customize Your Rankings
We offer a number of rankings, including this Highest Paid Carpenters Graduates list, to help you decide. Want schools in a particular part of the country? Narrow the list by region or state.
Want to compare schools head to head? Try our College Combat tool to weigh the factors that matter most to you.
See how we build our rankings
DEBUG: Raw major_slug = ""
DEBUG: Initial offers_url = "https://www.collegefactual.com/majors/construction-trades/carpenters/offers.json", major_slug = ""
DEBUG: After cleaning major_slug = ""
DEBUG: Before URL cleaning = "https://www.collegefactual.com/majors/construction-trades/carpenters/offers.json"
DEBUG: After TrimSuffix = "https://www.collegefactual.com/majors/construction-trades/carpenters/offers.json"
DEBUG: After HTTPS placeholder = "HTTPS_TEMP_PLACEHOLDERwww.collegefactual.com/majors/construction-trades/carpenters/offers.json"
DEBUG: After slash cleaning = "HTTPS_TEMP_PLACEHOLDERwww.collegefactual.com/majors/construction-trades/carpenters/offers.json"
DEBUG: After URL cleaning = "https://www.collegefactual.com/majors/construction-trades/carpenters/offers.json"
DEBUG: offers_url = https://www.collegefactual.com/majors/construction-trades/carpenters/offers.json
DEBUG: major_slug = ""
DEBUG: offers_url is valid, proceeding to fetch data
DEBUG: offers_data.offers found, count = 8
DEBUG: Specific major detected (cip4 = 46.02), keeping min_relevance at 0.8
DEBUG: Starting relevance filtering - min_relevance = 0.8, max_relevance = 1
DEBUG: Checking offer "Trade & Vocational Programs (Carpenter)" with relevance 1
DEBUG: ✓ Offer "Trade & Vocational Programs (Carpenter)" ACCEPTED (relevance 1)
DEBUG: Checking offer "Trade & Vocational Programs" with relevance 0.8
DEBUG: ✓ Offer "Trade & Vocational Programs" ACCEPTED (relevance 0.8)
DEBUG: Checking offer "Trade & Vocational Programs (Woodworker)" with relevance 0.8
DEBUG: ✓ Offer "Trade & Vocational Programs (Woodworker)" ACCEPTED (relevance 0.8)
DEBUG: Checking offer "MS in Management - Construction Management" with relevance 0.8
DEBUG: ✓ Offer "MS in Management - Construction Management" ACCEPTED (relevance 0.8)
DEBUG: Checking offer "Trade & Vocational Programs (Construction Trades)" with relevance 0.7
DEBUG: ✗ Offer "Trade & Vocational Programs (Construction Trades)" REJECTED (relevance 0.7)
DEBUG: Checking offer "Trade & Vocational Programs (Home Remodeling & Repair)" with relevance 0.7
DEBUG: ✗ Offer "Trade & Vocational Programs (Home Remodeling & Repair)" REJECTED (relevance 0.7)
DEBUG: Checking offer "Construction Management (I Have a HS Diploma or Associate Degree)" with relevance 0.5
DEBUG: ✗ Offer "Construction Management (I Have a HS Diploma or Associate Degree)" REJECTED (relevance 0.5)
DEBUG: Checking offer "Construction Management (I Have a Bachelors)" with relevance 0.5
DEBUG: ✗ Offer "Construction Management (I Have a Bachelors)" REJECTED (relevance 0.5)
DEBUG: relevant_offers count = 4
DEBUG: relevant_offers > 0, checking for ESYOH offers
DEBUG: ESYOH filtering - found 3 ESYOH offers with relevance >= 0.8
DEBUG: esyoh_offers count = 3
DEBUG: ESYOH offers found, rendering ESYOH widget
DEBUG: most_relevant_only = true, filtering for most relevant
DEBUG: Found 1 offers with relevance >= 1.0
Orleans Technical Institute came in at #16 for carpenters graduate earnings this year. Set in the city of Philadelphia, Orleans Technical Institute is a private not-for-profit institution. Carpenters graduates of Orleans Technical Institute earn a median of about $32,630 a year early in their careers.
Atlanta Technical College landed the #17 spot for carpenters salaries this year. Set in the city of Atlanta, Atlanta Technical College is a public institution. Early-career carpenters graduates from Atlanta Technical College make a median of around $18,912 per year.
City Colleges Of Chicago Kennedy King College came in at #18 for carpenters graduate earnings this year. Set in the city of Chicago, City Colleges Of Chicago Kennedy King College is a public institution. Early-career carpenters graduates from City Colleges Of Chicago Kennedy King College make a median of around $17,697 per year.
Triangle Tech Inc Pittsburgh placed #19 among the highest-paying schools for carpenters. Set in the city of Pittsburgh, Triangle Tech Inc Pittsburgh is a private for-profit institution. After graduating, carpenters degree recipients from Triangle Tech Inc Pittsburgh typically earn about $38,216 annually.
DEBUG: Raw major_slug = ""
DEBUG: Initial offers_url = "https://www.collegefactual.com/majors/construction-trades/carpenters/offers.json", major_slug = ""
DEBUG: After cleaning major_slug = ""
DEBUG: Before URL cleaning = "https://www.collegefactual.com/majors/construction-trades/carpenters/offers.json"
DEBUG: After TrimSuffix = "https://www.collegefactual.com/majors/construction-trades/carpenters/offers.json"
DEBUG: After HTTPS placeholder = "HTTPS_TEMP_PLACEHOLDERwww.collegefactual.com/majors/construction-trades/carpenters/offers.json"
DEBUG: After slash cleaning = "HTTPS_TEMP_PLACEHOLDERwww.collegefactual.com/majors/construction-trades/carpenters/offers.json"
DEBUG: After URL cleaning = "https://www.collegefactual.com/majors/construction-trades/carpenters/offers.json"
DEBUG: offers_url = https://www.collegefactual.com/majors/construction-trades/carpenters/offers.json
DEBUG: major_slug = ""
DEBUG: offers_url is valid, proceeding to fetch data
DEBUG: offers_data.offers found, count = 8
DEBUG: Specific major detected (cip4 = 46.02), keeping min_relevance at 0.5
DEBUG: Starting relevance filtering - min_relevance = 0.5, max_relevance = 1
DEBUG: Checking offer "MS in Management - Construction Management" with relevance 0.8
DEBUG: ✓ Offer "MS in Management - Construction Management" ACCEPTED (relevance 0.8)
DEBUG: Checking offer "Trade & Vocational Programs (Construction Trades)" with relevance 0.7
DEBUG: ✓ Offer "Trade & Vocational Programs (Construction Trades)" ACCEPTED (relevance 0.7)
DEBUG: Checking offer "Trade & Vocational Programs (Home Remodeling & Repair)" with relevance 0.7
DEBUG: ✓ Offer "Trade & Vocational Programs (Home Remodeling & Repair)" ACCEPTED (relevance 0.7)
DEBUG: Checking offer "Construction Management (I Have a HS Diploma or Associate Degree)" with relevance 0.5
DEBUG: ✓ Offer "Construction Management (I Have a HS Diploma or Associate Degree)" ACCEPTED (relevance 0.5)
DEBUG: Checking offer "Construction Management (I Have a Bachelors)" with relevance 0.5
DEBUG: ✓ Offer "Construction Management (I Have a Bachelors)" ACCEPTED (relevance 0.5)
DEBUG: relevant_offers count = 5
DEBUG: relevant_offers > 0, checking for ESYOH offers
DEBUG: ESYOH filtering - found 4 ESYOH offers with relevance >= 0.5
DEBUG: esyoh_offers count = 4
DEBUG: ESYOH offers found, rendering ESYOH widget
DEBUG: most_relevant_only = true, filtering for most relevant
DEBUG: Found 0 offers with relevance >= 1.0
DEBUG: Backfilling with 0 offers with relevance >= 0.9
DEBUG: Backfilling with 0 offers with relevance >= 0.8
DEBUG: Backfilling with 2 offers with relevance >= 0.7
Narrow Carpenters Schools by Region