Freelance EPUB Specialist — Advanced Formatting & Structural Fixes

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

TYPE OF WORK

Part Time

SALARY

TBD

HOURS PER WEEK

TBD

DATE UPDATED

Dec 11, 2025

JOB OVERVIEW

**Description:**
I am looking for a highly skilled EPUB technician to diagnose and repair formatting issues within EPUB files. This role requires someone who can work beyond standard EPUB editors (e.g., Kindle Create, Sigil’s basic mode) and is comfortable editing at the code level — including XHTML, CSS, OPF, NCX, and structural markup.

**Responsibilities:**
- Inspect EPUB packages and identify issues related to:
- Text formatting inconsistencies
- Improper HTML/XHTML structure
- CSS problems (spacing, fonts, layout, etc.)
- Broken internal links, TOC issues, navigation failures
- Validation errors (EPUBCheck compliance)
- Manually repair and optimize EPUB internals
- Ensure compatibility with major e-reading platforms (Kindle, Apple Books, Kobo, etc.)
- Provide a clean, well-structured, standards-compliant EPUB output

**Requirements:**
- Deep knowledge of EPUB 2 & EPUB 3 specifications
- Ability to hand-edit XHTML/HTML5 and CSS
- Experience working with tools like:
- Sigil (code view)
- Calibre (advanced editing)
- Apple Pages export debugging
- Command-line ZIP/unpack workflows
- EPUBCheck
- Understanding of semantic markup and accessibility best practices
- Familiarity with Kindle conversion quirks (KDP) is a plus

**Please do not apply if:**
- You only work with drag-and-drop EPUB editors like Kindle Create
- You are not comfortable editing EPUB files manually at the markup level

**To apply:**
Include samples of EPUBs you’ve repaired or created, and briefly describe the tools and methods you use when debugging EPUB formatting issues.

VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0010
Controller Execution Time ( Jobseekers / Job )  0.0151
Total Execution Time  0.0169
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,499,760 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Freelance-EPUB-Specialist-Advanced-Formatting-Structural-Fixes-1532973
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0086 seconds)  (Hide)
0.0003   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0003   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1532973
 LIMIT 1 
0.0010   SELECT *
FROM `employers`
WHERE `employer_id` = 487677
 LIMIT 1 
0.0003   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1532973
AND `misc`.`idIS NULL 
0.0004   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-04-22',ej.date_added) duration_daysDATEDIFF('2026-04-22',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-04-22',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1532973' 
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1532973 
0.0020   UPDATE employer_jobs SET hit_counts '***Dec-11-2025=67***Dec-12-2025=158***Dec-13-2025=21***Dec-14-2025=17***Dec-15-2025=20***Dec-16-2025=25***Dec-17-2025=14***Dec-18-2025=15***Dec-19-2025=18***Dec-20-2025=10***Dec-21-2025=13***Dec-22-2025=19***Dec-23-2025=15***Dec-24-2025=15***Dec-25-2025=16***Dec-26-2025=6***Dec-27-2025=10***Dec-28-2025=10***Dec-30-2025=16***Dec-31-2025=8***Jan-01-2026=13***Jan-02-2026=8***Jan-03-2026=3***Jan-04-2026=4***Jan-05-2026=9***Jan-06-2026=4***Jan-07-2026=7***Jan-08-2026=5***Jan-09-2026=6***Jan-10-2026=9***Jan-11-2026=5***Jan-12-2026=4***Jan-13-2026=8***Jan-14-2026=12***Jan-15-2026=2***Jan-16-2026=2***Jan-17-2026=7***Jan-18-2026=1***Jan-20-2026=9***Jan-21-2026=3***Jan-22-2026=8***Jan-23-2026=2***Jan-24-2026=6***Jan-25-2026=5***Jan-26-2026=10***Jan-27-2026=6***Jan-28-2026=4***Jan-30-2026=9***Jan-31-2026=6***Feb-02-2026=5***Feb-04-2026=1***Feb-05-2026=1***Feb-07-2026=2***Feb-08-2026=10***Feb-09-2026=6***Feb-10-2026=14***Feb-11-2026=2***Feb-15-2026=7***Feb-16-2026=6***Feb-17-2026=1***Feb-18-2026=1***Feb-19-2026=2***Feb-20-2026=2***Feb-22-2026=6***Feb-23-2026=3***Feb-24-2026=1***Feb-25-2026=4***Mar-02-2026=1***Mar-03-2026=7***Mar-05-2026=4***Mar-06-2026=2***Mar-07-2026=1***Mar-08-2026=5***Mar-10-2026=1***Mar-11-2026=1***Mar-17-2026=11***Mar-21-2026=5***Mar-22-2026=4***Mar-24-2026=4***Mar-26-2026=3***Mar-27-2026=3***Mar-28-2026=3***Mar-29-2026=7***Apr-02-2026=1***Apr-03-2026=1***Apr-10-2026=2***Apr-11-2026=2***Apr-12-2026=1***Apr-17-2026=2***Apr-21-2026=1***Apr-22-2026=1' WHERE job_id'1532973'  
0.0007   UPDATE employer_jobs SET monthly_hits '***Dec-2025=491***Jan-2026=176***Feb-2026=73***Mar-2026=62***Apr-2026=11' WHERE job_id'1532973'  
0.0014   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1532973' 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` = 1532973 
0.0014   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '487677'
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)