Photo editing quote calculator

Umitech Logo

Let's enhance your photos. Professional editing for stunning results.

Answer a few questions and we'll create a customized estimate for your photo editing project. Watch your estimate update in real-time as you visually select the various options. You can also request an accurate free quote after answering all questions.

What type of photo editing service do you need?

Select the option that best matches your primary editing goal

Basic Retouching

Color/Exposure Correction, Cropping, Minor Blemish Removal

Advanced Retouching

Detailed Skin Smoothing, Body Shaping, Complex Object Removal

E-commerce Product Editing

Background Removal/Replacement, Color Matching, Shadow Creation

Photo Restoration

Repairing Scratches, Tears, Fading, Colorizing B&W Photos

Batch Processing

Consistent Basic Adjustments for Large Sets (Events, Real Estate)

Custom Editing Project

Creative Compositing, Unique Styles, Specific Requirements

Tell us about your photos

These details help us estimate the workload accurately

How many photos need editing?

1-10 Photos

(Small batch)

11-50 Photos

(Medium batch)

51-200 Photos

(Large batch)

200+ Photos

(Bulk volume)

Note: The base price selected in the previous step is typically per photo. This selection acts as a multiplier and helps estimate volume discounts or bulk rates.

What is the main type of photos?

Helps us understand the typical subject matter and requirements (select one)

Portraits / People

Products

Real Estate / Architecture

Events / Weddings

Landscape / Nature

Mixed / Other

Editing Style & Delivery Format

Specify your preferences for the final edited images

What is the desired editing style?

Choose the overall aesthetic for the edits.

Natural & Clean

(True to life)

Vibrant & Punchy

(Enhanced colors)

+$1/img

Moody & Cinematic

(Darker tones)

+$1/img

Black & White

(Monochrome)

Follow Reference

(Provide examples)

+$2/img

Note: Prices shown for style are additive per photo.

What final file format(s) do you need?

Select all required formats (JPEG is standard). Additional formats may incur a small fee.

JPEG

(Standard web/print)

PNG

(Transparency needed)

+$0.5/img

TIFF

(High-quality print)

+$1/img

PSD (Layered)

(If available/requested)

+$5/img

Select Specific Edits Needed

Choose the individual editing tasks required for your photos. Price per photo, per task selected.

FREE

Project Consultation Call

Color Correction

Exposure & Contrast

Background Removal

Object Removal

Skin Retouching

Cropping & Resizing

Sharpening / Noise Reduction

Color Grading / Styling

Compositing (Basic)

Shadow Creation

Custom Task

What level of editing complexity is required?

Choose the overall depth and technical skill needed for the edits

Do you have a style guide or reference images?

Yes

No

Select the overall editing complexity level

Simple Edits

Basic adjustments, minor fixes, standard tasks

Moderate Edits

More detailed work, some object removal, basic compositing

+$5/img

Complex Edits

Advanced compositing, major restoration, high-end retouching

+$15/img

Add-on Editing Services

Select any extra services you want to include (price is typically per photo or project)

High-End Retouching

(Frequency Separation, D&B)

Source File Delivery

(Layered PSD/TIFF if available)

Complex Image Masking

(Hair, Fur, Intricate Objects)

Color Variants

(Multiple color options for products)

Metadata / IPTC Entry

(Keywords, Captions, Copyright)

Bulk Format Conversion

(Convert existing files)

Ongoing Support & Revisions

Select your preference for revisions and potential ongoing work

How important are revisions to you?

(Consider if you need flexibility after initial delivery)

Low Priority

(Minimal changes expected)

Moderately Important

(1-2 rounds likely)

Very Important

(Flexibility needed)

Choose a support & revision plan

No Plan (Final Delivery)

Edits are final upon delivery (minor fixes for errors only)

Standard Revisions

Includes 1 round of minor revisions per photo

+$1/photo

Premium Revisions

Includes up to 2 rounds of revisions per photo

+$3/photo

Ongoing Editing Retainer

Dedicated monthly editing hours/volume

$300+/month

Project Timeline

When do you need your edited photos delivered?

Standard Turnaround

Typical delivery (e.g., 2-5 business days)

Expedited Delivery

Faster turnaround (e.g., 1-2 business days)

Flexible / No Rush

Extended timeframe (5+ business days)

Almost There!

Let us know how to reach you with your customized photo editing quote

Calculating Your Estimate

Please wait while we process your photo editing requirements...

Analyzing service type & quantity
Considering specific edits & add-ons
Factoring in complexity & timeline
Generating your estimate

Photo Editing Estimate

Generated:

From:
Umitech
[email protected]
ABN: 69322477658
Homepage
Prepared For:
Client Name [email protected]

Estimate Breakdown

Description
Cost
Estimated total: $0

Notes & Next Steps

This estimate is based on your selections in the calculator and assumes standard image quality and complexity for the chosen services. The final price may be adjusted after reviewing your actual photos if they require significantly more work than anticipated (e.g., very poor quality originals for restoration, extremely complex objects for removal).

Volume Discounts: Discounts may be applied automatically for larger quantities and reflected in the total.
Minimum Charges: A minimum project fee may apply for very small orders. We will confirm this in the formal quote.

Payment terms: For most projects: Payment is due upon completion and approval of the edited images, before final delivery without watermarks. For larger projects or retainers: 50% deposit upfront, 50% upon completion. We accept credit cards, debit cards, bank transfers and Afterpay.

Frequently Asked Questions

How accurate is this photo editing estimate?

This calculator provides a strong initial estimate based on standard editing tasks and average complexity. The final quote might be adjusted slightly after we review your specific images. Factors like severe damage (for restoration), very complex backgrounds/subjects (for masking/removal), or extremely poor initial quality can influence the final price. We always provide a firm quote after seeing the photos.

What's included in the 'per photo' price?

The base service price (e.g., Basic Retouching, E-commerce Editing) covers the typical tasks associated with that service for one image. Additional specific edits (like Object Removal, Color Grading), complexity level adjustments, add-ons (like Source Files), format fees, and revision plans are added on top, usually also on a per-photo basis, contributing to the final total estimate.

What is the typical turnaround time?

Turnaround time depends on the number of photos, the complexity of the required edits, and our current workload. Standard turnaround is typically 2-5 business days for small to medium batches. Expedited options are available. We will provide a specific estimated delivery date in your formal quote after reviewing the project details.

How do I send you my photos?

After you request a formal quote, we will email you with instructions. Typically, we use secure file transfer services like Dropbox, Google Drive, or WeTransfer. For very large projects, we can discuss other options like FTP access.

What happens after I click "Request Formal Quote"?

We receive your selections and contact details. Our team will review your request and reply via email (usually within 1 business day) with instructions on how to upload your photos for our review. Once we've assessed the images and confirmed the scope, we'll send you a formal, fixed-price quote for your approval before starting any work.

Thank You!

Your photo editing quote request has been sent successfully. We'll be in touch soon with next steps!

Estimated Price: $0
Start
Service
Details
Style
Edits
Level
Add-ons
Support
Timeline
Contact
Estimate
Done
`; return html; },/** * Generate user email HTML for Photo Editing services (Identical) */ generateUserEmailHtml: function(type = 'calculate') { const cd = this.state.selections.contactDetails || {}; const totalPrice = this.state.totalPrice.toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 }); const currentYear = new Date().getFullYear();let title, intro, mainContent, ctaText, ctaLink;if (type === 'calculate') { title = "Your Photo Editing Estimate is Ready!"; intro = `Thank you for using our photo editing quote calculator! We've processed your selections to provide a personalized estimate.`; mainContent = `Based on the services, quantity, and complexity you selected, we've generated an estimate for your photo editing project.The next step is to review the detailed breakdown on our website. If you'd like to get a formal quote and proceed, click the "Request Formal Quote & Upload Files" button on the summary page. We'll then send instructions on how to send us your photos.`; ctaText = "View Your Estimate"; ctaLink = window.location.href; // Link back to the current page } else { // quote title = "Photo Editing Quote Request Received"; intro = `Thanks for requesting a formal photo editing quote, ${cd.name || 'there'}! Your request based on the calculator selections is being reviewed.`; mainContent = `We're excited to help make your photos look their best!You will receive a separate email shortly with instructions on how to securely upload your photos for our review.Once we've received and assessed your images against the requested services, we'll send a final, fixed-price quote for your approval before any editing work begins. This ensures accuracy and transparency.`; ctaText = "Contact Our Team"; ctaLink = "https://umitech.com.au/contact"; }const html = `${title}
Umitech Logo

${title}

Your estimate: ${totalPrice} AUD

Hi ${cd.name || 'there'},

${intro}

${mainContent.split('\n\n').map(p => `

${p}

`).join('')}

Your Estimated Investment

${totalPrice} AUD

Based on your selected editing services and quantity.

${ctaText && ctaLink ? ` ` : ''}

Perfecting your pixels,

The Umitech Editing Team

© ${currentYear} Umitech

Professional Photo Editing Services

Visit our website

`; return html; },/** * Populate Invoice Header and Generate Breakdown Items (Identical logic) */ populateInvoiceDetails: function() { try { // Populate Header if (this.elements.invoiceDateEl) { this.elements.invoiceDateEl.textContent = new Date().toLocaleDateString(); } const cd = this.state.selections.contactDetails || {}; if (this.elements.invoiceClientNameEl) { this.elements.invoiceClientNameEl.innerHTML = `${cd.name || 'N/A'}`; } if (this.elements.invoiceClientEmailEl) { this.elements.invoiceClientEmailEl.textContent = cd.email || 'N/A'; } if (this.elements.invoiceClientPhoneEl) { let phoneText = ''; if (cd.phone) { phoneText = `${cd.countryCode || ''} ${cd.phone}`; } this.elements.invoiceClientPhoneEl.textContent = phoneText; }// Generate Breakdown Items this.generateQuoteBreakdown(); // Call the updated breakdown function} catch (error) { console.error('Error populating invoice details:', error); } },/** * Generate breakdown items for the quote summary page (photo editing version - REVISED) */ generateQuoteBreakdown: function() { try { if (!this.elements.breakdownItems) return; this.elements.breakdownItems.innerHTML = ''; const quantity = this.state.estimatedPhotoCount || 1; const breakdownData = []; // Stores { label, priceText, isSubItem, isDiscount, isAdjustment }const formatPrice = (price) => price.toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 });// --- Categorize all selected items --- let totalPerPhotoCost = 0; let totalFixedCost = 0; const perPhotoItemsList = []; const fixedItemsList = []; const freeItemsList = [];const perPhotoKeys = ['service-type', 'editing-style', 'complexity-level', 'revision-plan', 'file-formats', 'specific-edits', 'add-on-services']; const fixedCostKeys = ['style-guide-creation', 'editing-training', 'timeline'];for (const key in this.state.selections) { if (!this.state.selections.hasOwnProperty(key) || key === 'contactDetails') continue; const selection = this.state.selections[key];const processItem = (item, itemKey) => { if (item.value === 'consultation-call' || (itemKey === 'file-formats' && item.value === 'format-jpeg' && item.price === 0)) { freeItemsList.push({ label: `• ${item.name}`, priceText: 'Included', isSubItem: true }); return; } if (item.price === 0) return; // Skip other zero-price items// Special case: Retainer is fixed if (itemKey === 'revision-plan' && item.value === 'retainer-editing') { totalFixedCost += item.price; fixedItemsList.push({ label: `Retainer: ${item.name}`, priceText: `$${formatPrice(item.price)}/mo` }); } else if (perPhotoKeys.includes(itemKey)) { totalPerPhotoCost += item.price; let labelPrefix = ''; let isSub = true; // Add prefixes for key per-photo items if (itemKey === 'service-type') { labelPrefix = `Base Service: `; isSub = false; } else if (itemKey === 'editing-style') { labelPrefix = `Style: `; isSub = false; } else if (itemKey === 'complexity-level') { labelPrefix = `Complexity: `; isSub = false; } else if (itemKey === 'revision-plan') { labelPrefix = `Revisions: `; isSub = false; } else { labelPrefix = `• `; } // Default bullet for multi-select itemsperPhotoItemsList.push({ label: `${labelPrefix}${item.name}`, priceText: `+$${formatPrice(item.price)} / photo`, isSubItem: isSub, rawPrice: item.price // Store raw price for sorting/grouping if needed }); } else if (fixedCostKeys.includes(itemKey)) { totalFixedCost += item.price; let priceText = `$${formatPrice(item.price)}`; if (item.price < 0) priceText = `-$${formatPrice(Math.abs(item.price))}`; // Handle discounts like flexible timeline fixedItemsList.push({ label: (itemKey === 'timeline' ? `Timeline: ` : `• `) + item.name, // Add prefix for timeline priceText: priceText, isSubItem: itemKey !== 'timeline' // Timeline is not a sub-item }); } else { console.warn(`Uncategorized item cost during breakdown: ${itemKey} -> ${item.name}`); totalFixedCost += item.price; // Default to fixed fixedItemsList.push({ label: `• ${item.name}`, priceText: `$${formatPrice(item.price)}`, isSubItem: true }); } };if (Array.isArray(selection)) { selection.forEach(item => processItem(item, key)); } else if (selection && typeof selection === 'object') { processItem(selection, key); } }// --- Build the final breakdown structure ---// Add Base Service + Quantity Line first if available const baseServiceSelection = perPhotoItemsList.find(item => item.label.includes("Base Service:")); if (baseServiceSelection) { breakdownData.push({ label: `${baseServiceSelection.label} (${quantity} photos)`, priceText: baseServiceSelection.priceText // Show per photo price here }); // Remove from perPhotoItemsList so it's not added again perPhotoItemsList.splice(perPhotoItemsList.indexOf(baseServiceSelection), 1); } else { // If no base service selected, still show quantity breakdownData.push({label:`Photo Quantity: ${quantity}`, priceText: ''}); }// Add other Per-Photo items perPhotoItemsList.sort((a, b) => (a.label > b.label ? 1 : -1)); // Optional: sort alphabetically breakdownData.push(...perPhotoItemsList);// Add Free/Included items breakdownData.push(...freeItemsList);// Add Fixed cost items fixedItemsList.sort((a, b) => (a.label > b.label ? 1 : -1)); // Optional: sort breakdownData.push(...fixedItemsList);// Add Volume Discount if applicable let subTotal = totalPerPhotoCost * quantity; let discountAmount = 0; if (quantity >= VOLUME_DISCOUNT_THRESHOLD && totalPerPhotoCost > 0) { discountAmount = subTotal * VOLUME_DISCOUNT_PERCENTAGE; breakdownData.push({ label: `Volume Discount (${(VOLUME_DISCOUNT_PERCENTAGE * 100).toFixed(0)}% for ${quantity} photos)`, priceText: `-$${formatPrice(discountAmount)}`, isDiscount: true }); }// Add Minimum Fee Adjustment if applicable let displayTotal = subTotal - discountAmount + totalFixedCost; if (displayTotal > 0 && displayTotal < MINIMUM_PROJECT_FEE) { breakdownData.push({ label: `Minimum Project Fee Adjustment`, priceText: `+$${formatPrice(MINIMUM_PROJECT_FEE - displayTotal)}`, isAdjustment: true }); }// --- Render the breakdown --- if (breakdownData.length === 0 && this.state.totalPrice === 0) { this.elements.breakdownItems.innerHTML = '
Select options to see breakdown.
'; } else { breakdownData.forEach(itemData => { const item = document.createElement('div'); item.className = 'uq-invoice-item'; if (itemData.isDiscount) item.style.color = 'green'; if (itemData.isAdjustment) item.style.fontStyle = 'italic'; item.innerHTML = `
${itemData.label}
${itemData.priceText}
`; this.elements.breakdownItems.appendChild(item); }); }} catch (error) { console.error('Error generating quote breakdown:', error); if (this.elements.breakdownItems) this.elements.breakdownItems.innerHTML = '
Error loading breakdown
'; } },/** * Show the dedicated Thank You page section (Identical logic, updated message) */ showSubmissionSuccessPage: function(action) { try { const messageElement = document.getElementById('thank-you-message'); if (messageElement) { if (action === 'quote') { // Action for photo editing messageElement.innerHTML = "Your photo editing quote request has been sent successfully!
We'll email you shortly with instructions on how to upload your files.
Please check your inbox (and spam folder)."; } else { // Default (calculate) messageElement.innerHTML = "Your photo editing estimate has been calculated!
Please check your inbox (and spam folder) for a summary email.
You can request a formal quote from the summary page."; } } this.showSection('thank-you'); } catch (error) { console.error('Error showing thank you page:', error); alert("Submission successful! Thank you."); this.resetCalculator(); } },/** * Reset calculator to start a new quote (Identical) */ resetCalculator: function(skipCookieClear = false) { try { console.log('Resetting calculator...'); if (!skipCookieClear) { this.clearSavedData(); }// Reset state this.state.selections = {}; this.state.totalPrice = 0; this.state.activeSections = [...this.state.sectionSequence]; this.state.currentSectionIndex = 0; this.state.submissionInProgress = false; this.state.estimatedPhotoCount = 1;// Reset UI Elements this.elements.calculator.querySelectorAll('.uq-option.selected').forEach(o => o.classList.remove('selected')); this.elements.contactForm?.reset(); this.elements.contactForm?.querySelectorAll('.uq-invalid-field').forEach(el => el.classList.remove('uq-invalid-field')); document.getElementById('country-code')?.querySelector('option[value="+61"]')?.setAttribute('selected', 'selected'); if (this.elements.styleReferenceInputField) this.elements.styleReferenceInputField.value = '';this.hideValidationMessage(); if (this.elements.breakdownItems) this.elements.breakdownItems.innerHTML = '';// Reset conditional elements/steps & visibility this.updateConditionalSections(); this.updateStepIndicatorsVisibility();// Ensure default selections are re-selected this.setDefaultSelections();// Reset price, progress, nav this.calculateTotalPrice(); this.updatePriceDisplay(0); this.updateProgress();// Show the welcome section this.showSection('welcome');if (this.elements.priceBar) this.elements.priceBar.style.display = 'block'; this.updateNavigationButtons();console.log('Calculator reset complete.');} catch (error) { console.error('Error resetting calculator:', error); alert("Error resetting the calculator. Please refresh the page."); } },/** Clear saved cookies (Identical) */ clearSavedData: function() { try { document.cookie = `${this.cookies.name}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/; SameSite=Lax; Secure`; console.log('Cleared saved quote data cookie.'); } catch (error) { console.error('Error clearing saved data:', error); } },/** Apply mobile-specific class and layout adjustments (Identical - CSS handles) */ applyMobileOptimizations: function() { // CSS now handles responsive display },/** Add/Remove Loading Indicator (Identical) */ addLoadingIndicator: function(parent = this.elements.calculator.querySelector('.uq-section-active')) { if (!parent) return; this.removeLoadingIndicator(parent); // Ensure no duplicates const loader = document.createElement('div'); loader.className = 'uq-loading'; loader.innerHTML = '
'; if (window.getComputedStyle(parent).position === 'static') { parent.style.position = 'relative'; } parent.appendChild(loader); }, removeLoadingIndicator: function(parent = this.elements.calculator) { parent?.querySelector('.uq-loading')?.remove(); },/** Animate number change smoothly (Identical - includes formatting) */ animateNumber: function(element, start, end) { if (!element) return; start = Number(start) || 0; end = Number(end) || 0; const endFormatted = end.toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 }); if (start === end) { element.textContent = endFormatted; return; } try { const duration = 600; let startTime = null; const step = (currentTime) => { if (!startTime) startTime = currentTime; const progress = Math.min((currentTime - startTime) / duration, 1); const easedProgress = this.easeOutCubic(progress); const currentValue = start + easedProgress * (end - start); element.textContent = currentValue.toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 }); if (progress < 1) requestAnimationFrame(step); else element.textContent = endFormatted; }; requestAnimationFrame(step); } catch (error) { console.error('Error animating number:', error); element.textContent = endFormatted; } },/** Easing function (Identical) */ easeOutCubic: (t) => (--t) * t * t + 1,/** Debounce function (Identical) */ debounce: function(func, wait) { let timeout; return (...args) => { clearTimeout(timeout); timeout = setTimeout(() => func.apply(this, args), wait); }; } }; // End PhotoEditingCalculator Object// Initialize PhotoEditingCalculator.init(); // Use the renamed object})(); // End IIFE }); // End DOMContentLoaded

Questions? We got answers.

We’re your business’ best mate – handling all the heavy lifting while you focus on the big picture. From slick websites to eye-catching logos, comprehensive spreadsheets to social media that pops – Umitech can cover most business needs, regardless of how big or small your business is.

Get in touch today and receive a free quote within 24 hours.

You'll speak with a real person. No bots allowed here!

Not so fast, cowboy.

If you're leaving now, you're missing out on a huge opportunity. An opportunity with the potential to forever change your business and your revenue.

Take a step back while you're still in time. You can either:

or

If you've already made up your mind, we're sad to see you go. But if you're willing to give us a chance, your first free quote is less than 5 minutes away.