Roughly 51.5 million U.S. workers held contingent or contract roles in 2024, with staffing agencies placing 14.8 million people across the year (American Staffing Association, 2025). Contract roles dominate technology, healthcare, government, and creative hiring, yet they are the easiest type of work to format badly. Listed wrong, a string of 6 to 12 month contracts reads as job-hopping; listed right, the same record reads as breadth, brand exposure, and demand. This guide is the canonical resource for contract work specifically. If you are an independent self-employed worker with many concurrent clients, the format rules are different and you should read our companion piece on listing freelance work on a resume instead.
Contract Work vs Freelance Work: Where the Line Is
Recruiters use these words interchangeably, but on a resume they describe two different work patterns that need different formatting. Get the framing wrong and the resume tells a story that does not match the work history.
Contract Work
Pattern: One client at a time, full-time hours, fixed-term scope, usually placed through a staffing agency or contracted directly.
Tax status: W2 contractor (most common), 1099, or corp-to-corp.
Examples: 6-month software engineering contract at a FAANG via TEKsystems; 13-week travel nurse assignment via Aya Healthcare; 12-month federal IT contract.
Resume treatment: Each contract slots into the chronological Experience section as if it were a job. The 'Contract' tag in the title carries the meaning.
Freelance Work
Pattern: Multiple concurrent clients, variable hours, project-based scopes, self-sourced.
Tax status: Almost always 1099 or sole proprietor.
Examples: Independent graphic designer with eight active clients; freelance writer juggling six publications; web developer running a one-person studio.
Resume treatment: Umbrella entry under 'Self-Employed' or a business name, with client highlights as bullets. See our freelance work guide.
The Four Contract Types You Need to Distinguish
The legal and tax structure of a contract does not change the resume format much, but it changes how you describe the employer and how the role parses through company-name keyword scans. Here are the four structures you will encounter and how each appears on the resume.
| Contract Type | How It Works | Common In | Who Goes On the Resume |
|---|---|---|---|
| W2 Contractor (Agency) | You are a W2 employee of the staffing agency. The agency assigns you to a client. The client pays the agency; the agency pays you. | Technology, finance, healthcare, government | Client name primary, agency in parentheses (the recommended pattern) |
| 1099 Independent Contractor | The client pays you directly as a non-employee. You file a 1099-NEC. No agency in between. | Consulting, creative, solo specialists | Client name as the employer, with 'Contractor' or 'Consultant' in the title |
| Corp-to-Corp (C2C) | Your own LLC or S-Corp invoices the client (or agency). Most senior tech contractors use this for tax efficiency. | Senior engineering, architecture, niche specialists | Client name primary; your LLC name is generally omitted unless the LLC is the brand |
| Contract-to-Hire | You start as a W2 or 1099 contractor with the expectation of converting to full-time after a probation period. | Technology, mid-market companies, post-restructuring orgs | Client name as one continuous role with both date ranges if you converted |
"software engineer" AND ("Google" OR "Meta" OR "Amazon")). If you list TEKsystems as the company and bury 'Google' inside a bullet, the scan misses you. Lead with the recognizable client name.
Where to List Contracts: Chronological vs Consulting Section vs Umbrella
Three structural choices exist for placing contract work on a resume. The decision depends on how many contracts you held, how long each ran, and what story you want the work history to tell.
Option 1: Chronological Experience Section (Per-Contract Entries)
Treat each contract as a separate job in the chronological Experience section. Best for resumes where contracts are interspersed with permanent roles, or where you have had three or fewer notable contracts and each lasted at least three months. This is the default approach for technology and healthcare contractors.
Option 2: Umbrella Entry ("Independent Contractor" / "Consultant")
Create a single role titled something like 'Independent Software Consultant' or 'Independent Contractor' with one date range covering the whole period, then list clients as sub-bullets or sub-entries. Best when you have four or more clients in a short window, several engagements were under three months, or the brand mix is uneven (some recognizable, some unknown). The umbrella keeps the chronological section clean and stops the resume from looking like 12 jobs in 4 years.
Option 3: Dedicated Consulting Section
Add a separate section after Experience titled 'Consulting Engagements' or 'Contract Engagements,' with each project listed underneath. Best for senior professionals who want their permanent roles to anchor the Experience section while still surfacing recent contract work. Common for management consultants returning to permanent roles, retired executives doing board or advisory work, and professors who consult on the side.
Decision Tree: Which Format Should You Use?
- Three or fewer contracts, each three months or longer, mostly recognizable clients? Use Option 1 (per-contract entries in chronological Experience).
- Four or more contracts in a short window, or several short engagements? Use Option 2 (umbrella entry).
- Long permanent history with some recent contract work on the side? Use Option 3 (dedicated Consulting section).
- Contract-to-hire that converted at the same company? Single continuous entry under the client with both date ranges in the title line.
The Agency-Name Pattern for Staffing Placements
Staffing-agency placements are the trickiest format question contractors face. The recruiter wants to see the client (Google, Capital One, the Mayo Clinic), and the candidate is technically a W2 employee of TEKsystems. Both pieces of information matter, so we put both on the resume in a specific order.
Recommended: Client-Forward Pattern
Senior Software Engineer (Contract)
Capital One (via TEKsystems) | McLean, VA | March 2024 - February 2025
Why this works: 'Capital One' shows first in recruiter Boolean searches and recruiter brand scans. 'via TEKsystems' discloses the employment relationship for the recruiter who asks.
Alternative: Agency-Forward Pattern
Senior Software Engineer, Capital One Engagement
TEKsystems | McLean, VA | March 2024 - February 2025
When to use: Only when the agency relationship is structurally important, such as a non-disclosure agreement that prevents naming the client. Otherwise the client-forward pattern wins.
Disclosing the Contract Nature in the Title
Contract status belongs in the role title or directly next to it, not buried in the bullets. The reason is simple: a recruiter glances at the resume for six to seven seconds on the first pass (Ladders eye-tracking study, 2018). If 'Contract' is not visible in that window, the recruiter assumes the role was permanent. When the recruiter later realizes it was a contract, the resume reads as deceptive instead of complete.
| Pattern | Example | Best For |
|---|---|---|
| Parenthetical suffix on title | Senior Software Engineer (Contract) | Default, works for most ATS parsers |
| Comma suffix on title | Senior Software Engineer, Contract | When you know the employer uses older Taleo (parentheticals can truncate) |
| Em-style descriptor on dates line | March 2024 - February 2025 (Contract via TEKsystems) | Keeps the title clean for keyword scans focused on title |
| Length descriptor | Senior Software Engineer (12-Month Contract) | When the contract length itself communicates scope |
| Contractor as the title | Independent Contractor, Software Engineering | Umbrella entries covering multiple clients |
What we never recommend: omitting the contract status entirely. Recruiters cross-check tenure against LinkedIn and reference checks. A resume that presents a 9-month contract as a permanent role with no qualifier is the resume that gets pulled after the offer is verbal.
Handling Short Contracts Without Looking Job-Hoppy
A 3-month contract, 4-month contract, and 6-month contract in a row look like three jobs to a casual reader. They look like fixed-term placements to a recruiter who notices the 'Contract' tag, but the casual reader is often the first reviewer. Five techniques mitigate the perception.
1. Label every contract
Every short engagement needs the 'Contract' suffix on the title. A scanner who sees 'Software Engineer (Contract)' three times in a row reads contracts; a scanner who sees 'Software Engineer' three times reads job-hopping.
2. Group under an umbrella
Three short contracts at three different clients can become one 'Independent Software Consultant, January 2024 - Present' entry with the three clients as sub-bullets. The chronological section drops from three entries to one.
3. Lead with a summary line
Add a one-line professional summary that names the contract framing up front: 'Software engineer with 8 years of experience including 3 years of contract roles at financial services firms.' Now the contracts are intentional, not accidental.
4. Use year-only dates for short stints
A 4-month contract that ran March-July 2024 can read '2024' instead of 'March 2024 - July 2024.' This is acceptable for contract roles specifically. Do not use this trick on permanent roles; it raises flags.
5. Omit anything under 8 weeks
Very short contracts add clutter without adding evidence. If a contract ran under 8 weeks and did not produce a portfolio piece you want to point at, leave it off and let the longer engagements carry the resume.
6. Quantify outcomes per contract
A short contract with one strong quantified result ('shipped payments microservice handling $4.2M/day in transactions') reads as substantive, not transient. A short contract with vague duties reads as filler.
6 Filled Examples Across the Most Common Contract Patterns
These are complete entries with realistic titles, dates, employer fields, and quantified bullets. Copy the pattern that matches your situation and substitute your own details.
Example 1: SWE on a 6-Month FAANG Contract via TEKsystems
Per-Contract Entry, Client-Forward Agency Pattern
Senior Software Engineer (6-Month Contract)
Meta (via TEKsystems) | Menlo Park, CA | August 2024 - February 2025
- Built feature flags service used by 12 product teams; cut average rollout time from 4 days to 90 minutes
- Migrated 3 legacy Python services to Go, reducing P99 latency from 380ms to 95ms
- Authored 14 ADRs adopted by the platform org as standard practice for new microservices
- Mentored 2 junior engineers through onboarding; both retained as conversions to full-time
Example 2: RN on a 13-Week Travel Contract via Aya Healthcare
Travel Nursing Per-Contract Entry
Registered Nurse, ICU (13-Week Travel Contract)
Cedars-Sinai Medical Center (via Aya Healthcare) | Los Angeles, CA | January 2025 - April 2025
- Provided direct patient care for medical and surgical ICU patient ratio 1:2, including post-cardiac and post-thoracic recovery
- Operated invasive hemodynamic monitoring (arterial lines, Swan-Ganz, CVP) and managed continuous renal replacement therapy
- Charted in Epic; oriented 3 new staff RNs to unit workflow as senior travel
- Maintained zero CLABSI and zero CAUTI events across 13-week assignment; 100% bundle compliance
Example 3: Marketing Consultant Umbrella With 3 Clients
Umbrella Entry With Sub-Bullets Per Client
Independent Marketing Consultant
Self-Employed | Remote | June 2023 - Present
- Engaged on three full-time fixed-term contracts in 22 months, focused on B2B SaaS demand generation, paid acquisition strategy, and lifecycle marketing rebuilds
Notable Engagements:
- Stripe (9 months, 2024): Rebuilt the SMB acquisition funnel; lifted MQL-to-SQL conversion from 11% to 23% and reduced blended CAC by 31%
- Atlassian (6 months, 2023-2024): Owned the lifecycle program for Confluence Cloud; recovered $4.8M in expansion ARR from churned accounts
- Notion (7 months, 2024-2025): Ran paid search and paid social across 4 markets; cut blended CPL 22% while growing pipeline 41%
Example 4: Contract-to-Hire That Converted
Single Continuous Entry With Two Date Ranges
Data Engineer (Contract Apr 2024 - Sep 2024, Full-Time Sep 2024 - Present)
Snowflake | San Mateo, CA | April 2024 - Present
- Joined as contractor via Insight Global to rebuild the customer telemetry pipeline; converted to FTE at 5-month mark
- Migrated 84 batch DAGs from Airflow 1.x to Airflow 2.7; cut average DAG runtime 38% and eliminated 12 nightly OOM failures
- Designed and shipped near-real-time CDC pipeline for 6 Postgres source systems into Snowflake; backed Looker dashboards used by 240+ internal users
- Owned data contracts between platform and 4 product teams; reduced production data incidents 47% YoY
Example 5: Agency-Placed PM With 4 Successive Clients
Umbrella Under the Agency, Each Client as a Sub-Entry
Senior Technical Program Manager (Contract)
Robert Half Technology | Austin, TX | March 2022 - Present
- Placed on four successive full-time contract engagements across financial services and enterprise SaaS clients
Client Engagements:
- JPMorgan Chase (12 months, 2024-2025): Led cloud migration TPM for 18 services from on-prem to AWS; on time, $1.2M under budget
- USAA (8 months, 2023-2024): Coordinated 6-team release train for member auth platform; lifted release cadence from quarterly to biweekly
- Salesforce (9 months, 2023): TPM for Slack-Salesforce integrations; shipped 4 major integrations across 3 product lines
- Capital One (10 months, 2022-2023): Drove platform standards for 12 application teams; reduced production incidents 34% YoY
Example 6: Solo 1099 With a Single Recurring Client
Direct 1099 Engagement, Per-Contract Entry
Fractional CFO (1099 Consultant)
Embark Veterinary, Inc. | Boston, MA | February 2023 - Present
- Retained on a 20-hour-per-week 1099 engagement covering financial planning, board reporting, and Series C readiness
- Rebuilt the 3-statement model and 24-month cash runway forecast; surfaced 9-month runway gap that triggered the $42M Series C raise
- Set up monthly board financial package and KPI dashboard; reduced board-prep cycle from 12 days to 3 days
- Negotiated debt facility ($15M revolver) extending operating runway 14 months
LinkedIn Setup for Contract Work (The 'Self-Employed' Trap)
LinkedIn's default behavior pushes every contractor toward a single 'Self-Employed' entry. That single entry is almost always the wrong choice, because LinkedIn's recruiter search weights company names heavily and 'Self-Employed' is essentially invisible to those filters. The right setup mirrors the resume.
LinkedIn Position Setup, by Contract Pattern
- W2 agency placements (3+ months): Create one LinkedIn position per client. Put the client (not the agency) in the Company field; mention 'via [Agency]' in the position description. The recruiter search filter on the client name will now find you.
- 1099 direct engagements (3+ months): Create one LinkedIn position per client with the client in the Company field. Add 'Contract' or 'Contractor' to the headline of the position.
- C2C through your own LLC: Same as 1099 above. Your LLC goes in the resume header (if anywhere); the client name goes in the LinkedIn Company field.
- Many short engagements: One umbrella LinkedIn position titled 'Independent [Discipline] Consultant' with the client list in the description. Treat this as the catch-all.
- Contract-to-hire that converted: One LinkedIn position at the company with the contract and full-time dates split out in the description ('Joined as contractor April 2024; converted to FTE September 2024').
- Your LinkedIn headline: Include the phrase 'Open to Contract Roles' or 'Available for [Discipline] Contracts' if you want inbound contract pipeline. Recruiters search for these phrases.
One caveat: LinkedIn will show your work history as 'X positions over Y years' on the profile header. Multiple contract positions can make that count look high. The fix is to use LinkedIn's 'Group positions' feature, available when multiple positions share the same parent company (the agency) or umbrella heading. Recruiters reading the profile see the grouped view and the individual client entries underneath.
ATS Parsing of Contract Titles (Workday, Greenhouse, Lever, iCIMS, Taleo)
Most modern ATS parsers handle contract labels correctly. The differences across vendors are at the margin, but they matter for the candidates being filtered at scale. Here is the behavior we have observed across the five most common parsers, based on testing during 2024-2025.
| ATS Vendor | Parenthetical Title Suffix (e.g., "(Contract)") | Client Name in Company Field | Tenure Calculation |
|---|---|---|---|
| Workday | Parses cleanly; keeps the parenthetical with the title | Parses cleanly; supports 'Client (via Agency)' format | Calculates per-position tenure; flags average tenure under 12 months for recruiter review |
| Greenhouse | Parses cleanly | Parses cleanly | Surfaces work history as-is; tenure flags depend on company-specific scorecards |
| Lever | Parses cleanly | Parses cleanly | No native tenure flag; relies on recruiter manual review |
| iCIMS | Parses cleanly; the 'Contract' tag is captured as metadata | Parses cleanly; the 'via Agency' phrase is captured but not indexed for search | Calculates per-position tenure; tenure under 6 months can trigger a 'Job Stability' rule in some configurations |
| Taleo (older instances) | Some older instances truncate parentheticals after 30 characters in the title field | Parses cleanly | Tenure calculations vary by employer configuration |
The practical takeaway: parenthetical suffixes work everywhere except some older Taleo instances. If you are applying to a Fortune 500 you know runs an older Taleo (typically signaled by a careers URL containing 'taleo.net'), switch to a comma suffix on the title ('Senior Software Engineer, Contract') for safety. For everyone else, the parenthetical form is fine. Run your resume through our free ATS checker to see how your specific format parses.
Common Mistakes With Contract Work on Resumes
These are the seven patterns we see most often when reviewing contractor resumes. Each one is fixable in a few minutes.
1. Burying the contract status
The word 'contract' appears in a bullet on line 4 of the role. By then the recruiter has decided the resume is misleading. The status belongs in the title.
2. Leading with the agency name
TEKsystems in the company field, 'Google' nowhere visible to the keyword scan. The recognizable client should lead.
3. Mixing contract and freelance framing
Some roles labeled 'Contractor,' others 'Freelancer,' others 'Consultant.' Pick one framing and apply it across every entry.
4. Defaulting to the LinkedIn 'Self-Employed' entry
LinkedIn pushes everyone toward this. It hides every recognizable client name from recruiter search. Create per-client positions instead.
5. Listing every micro-contract
Eight contracts in three years, each under 8 weeks, each with a one-line bullet. Group these under an umbrella or drop the shortest ones entirely.
6. Vague duties, no quantified outcomes
Short contract entries especially need one strong quantified outcome. 'Supported the engineering team' reads as filler; 'shipped feature flags service used by 12 teams' reads as substance.
7. Hiding a contract-to-hire conversion
Splitting the conversion into two separate entries reads like two short jobs. One continuous entry with both date ranges in the title reads like one stable role.
8. Using year-only dates on permanent roles too
Year-only dates are acceptable for short contract entries. Applying the same trick to permanent roles raises flags about hidden gaps. Use month-year for everything permanent.