Freelance Technical SEO Specialist

Please login or register as jobseeker to apply for this job.

TYPE OF WORK

Gig

SALARY

$11.50

HOURS PER WEEK

TBD

DATE UPDATED

Jul 20, 2026

JOB OVERVIEW

We're a UK-based digital marketing and web design agency looking for an experienced technical SEO freelancer to work with on an ad-hoc basis for complex troubleshooting that goes beyond standard on-page fixes.

We have a couple of live issues to start with, both more advanced technical SEO problems involving Google Search Console diagnostics, indexing behaviour, and crawl/canonical issues. We're not looking for general SEO audits or content recommendations, we need someone comfortable getting into the detail of crawl logs, GSC data, structured data, and server-level configuration to diagnose and fix issues that have resisted standard fixes.

Full details of the specific issues will be shared with shortlisted candidates, but to give a sense of the level of work involved, recent examples include things like:

• Diagnosing why Google is overriding declared canonical tags in favour of a country-specific sister domain, despite correct technical implementation (hreflang, structured data, locale signals all in place), likely requiring a content differentiation strategy alongside technical fixes
• Investigating unexplained large-scale URL/page detection in Search Console that doesn't match the actual site structure, likely caused by parameter handling or external link patterns

What we're looking for:
• Strong hands-on experience with GSC, log file analysis, URL parameter handling, canonicalisation, and international/hreflang SEO
• Comfortable working across WordPress/Divi and other CMS platforms
• You're comfortable working independently and digging into the detail until you find the actual cause, not just the obvious fix.
• Available for occasional projects rather than a fixed retainer, ideally someone we can build an ongoing relationship with for this kind of work as it comes up
• Great English skills.
• The ability to work to UK working hours
• Great internet connection and willingness to communicate via email, WhatsApp and Zoom (if required)

To apply:
Please share examples of similar technical SEO diagnostic work you've done, particularly anything involving canonical/indexing conflicts or crawl anomalies, and your typical approach to investigating an issue like this.

We're easy to work with and happy to share full context once we're talking, just want to make sure we're starting the conversation with the right people.

SKILL REQUIREMENT
VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0007
Controller Execution Time ( Jobseekers / Job )  0.0164
Total Execution Time  0.0176
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,488,984 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Freelance-Technical-SEO-Specialist-1692620
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0112 seconds)  (Hide)
0.0003   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0003   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1692620
 LIMIT 1 
0.0013   SELECT *
FROM `employers`
WHERE `employer_id` = 535012
 LIMIT 1 
0.0007   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1692620
AND `misc`.`idIS NULL 
0.0004   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-08-11',ej.date_added) duration_daysDATEDIFF('2026-08-11',e.rebill_date) duration_rebillej.*, e.deactivate FROM employers eemployer_jobs ej WHERE e.employer_id ej.employer_id AND
                                   ((
e.user_level >= '500' AND ej.date_added <= e.rebill_date)
                                   OR 
e.employer_id '' OR (ej.date_approved <> '2000-01-01' and DATEDIFF('2026-08-11',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1692620' 
0.0007   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1692620 
0.0007   UPDATE employer_jobs SET hit_counts '***Jul-20-2026=832***Jul-21-2026=78***Jul-22-2026=27***Jul-23-2026=31***Jul-24-2026=29***Jul-25-2026=9***Jul-26-2026=19***Jul-27-2026=21***Jul-28-2026=19***Jul-29-2026=20***Jul-30-2026=14***Jul-31-2026=17***Aug-01-2026=15***Aug-02-2026=12***Aug-03-2026=12***Aug-04-2026=5***Aug-05-2026=1***Aug-06-2026=4***Aug-07-2026=1***Aug-08-2026=1***Aug-11-2026=1' WHERE job_id'1692620'  
0.0006   UPDATE employer_jobs SET monthly_hits '***Jul-2026=1116***Aug-2026=52' WHERE job_id'1692620'  
0.0007   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1692620' AND status LIKE 'sent%' ORDER BY id DESC  
0.0002   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1692620 
0.0047   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '535012'
AND `date_added` >= '2022-06-08' 
0.0003   select from teasers 
0.0002   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)