Check server response of

Server response
NS records
Whois domain
Response headers
Request headers
Raw HTML code
200 OK - pdflp.com
HTTP Status: 200
User-Agent: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; [email protected])
Report-To: {"group":"heroku-nel","max_age":3600,"endpoints":[{"url":"https://nel.heroku.com/reports?ts=1747604120&sid=1b10b0ff-8a76-4548-befa-353fc6c6c045&s=h63BrbjoNX4jB2DTqlq%2Fpa7k9ZOxJnUN8qQhmBlS1c4%3D"}]}
Reporting-Endpoints: heroku-nel=https://nel.heroku.com/reports?ts=1747604120&sid=1b10b0ff-8a76-4548-befa-353fc6c6c045&s=h63BrbjoNX4jB2DTqlq%2Fpa7k9ZOxJnUN8qQhmBlS1c4%3D
Nel: {"report_to":"heroku-nel","max_age":3600,"success_fraction":0.005,"failure_fraction":0.05,"response_headers":["Via"]}
Connection: keep-alive
Server: gunicorn
Date: Sun, 18 May 2025 21:35:20 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 21060
Set-Cookie: customer_id=b9c2e9c7588d150c6570ae4e891a4088; Expires=Mon, 18 May 2026 21:35:20 GMT; Max-Age=31536000; Path=/
Vary: Cookie
Via: 1.1 vegur

HTTP Code 200 OK

200 status code is a standard successful HTTP server response. It means that the client’s request (e.g., from a browser) was successfully processed, and the server is delivering the requested data.

When is Code 200 used?

  • When loading a web page
  • When successfully receiving an API response
  • When processing a form or another HTTP request

What does Code 200 mean for the user?

The user receives content without errors, and the page or application functions properly. If Code 200 is accompanied by data, the browser or program processes and displays it to the user.

GET / HTTP/1.1
Host: pdflp.com
Accept: */*
User-Agent: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; [email protected])
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>PDF Lightning Processor</title>
    <meta name="description" content="Compress or convert PDFs, DOCX, XLSX, PPTX, JPG, PNG files for free up to 5MB or upgrade for unlimited sizes, batch processing, and OCR.">
    <meta name="keywords" content="PDF compressor, file converter, OCR PDF, free PDF tool, convert files online">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="icon" href="/static/favicon.ico">
    <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;600;700&display=swap" rel="stylesheet">
    <link rel="stylesheet" href="/static/style.css">
    <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9662036547480492" crossorigin="anonymous"></script>
    <script src="https://js.stripe.com/v3/"></script>
    <script async src="https://www.googletagmanager.com/gtag/js?id=G-5ZWCGPSFXS"></script>
    <script type="text/javascript" src="https://www.dropbox.com/static/api/2/dropins.js" id="dropboxjs" data-app-key="1llv22qxg0b7mib"></script>
    <script src="https://apis.google.com/js/api.js"></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());
      gtag('config', 'G-5ZWCGPSFXS');
    </script>
</head>
<body>
    <header>
        <nav class="conversion-nav">
            <a href="/?output_format=pdf" class="nav-btn active">To PDF</a>
            <a href="/?output_format=docx" class="nav-btn ">To DOCX</a>
            
        </nav>
        <h1>PDF Lightning Processor</h1>
        <p class="subtitle">Fast, Easy File Conversion & Compression</p>
        <div class="nav-buttons">
            <a href="/dashboard" class="nav-btn">Dashboard</a>
            <a href="/blog" class="nav-btn">Blog</a>
            <button id="darkModeToggle" class="nav-btn dark-mode-btn">Toggle Dark Mode</button>
        </div>
    </header>
    <main>
        <section class="upload-section">
            
                <p class="free-info">Free up to 5MB for PDFs, DOCX, XLSX, PPTX, JPG, PNG (converted to PDF or DOCX). <a href="/premium" class="premium-link">Upgrade to Premium</a> for OCR and more!</p>
            
            <div id="dropZone" class="drop-zone">
                <span>Drop Files Here or</span>
                <div class="upload-options">
                    <button type="button" id="selectBtn" onclick="document.getElementById('fileInput').click();">Select Files</button>
                    <button id="dropboxBtn" class="cloud-btn" title="Upload from Dropbox">
                        <img src="/static/icons/dropbox.png" alt="Dropbox" class="cloud-icon">
                    </button>
                    <button id="googleDriveBtn" class="cloud-btn" title="Upload from Google Drive">
                        <img src="/static/icons/google-drive.png" alt="Google Drive" class="cloud-icon">
                    </button>
                </div>
                <input type="file" id="fileInput" name="file" accept=".pdf,.docx,.xlsx,.pptx,.jpg,.png"  style="display:none;">
                <div class="zap-overlay" id="zapOverlay"></div>
                <div class="options">
                    <label for="outputFormat">Output Format:</label>
                    <select id="outputFormat" name="output_format">
                        <option value="pdf" selected>PDF</option>
                        <option value="docx" >DOCX</option>
                    </select>
                    
                </div>
            </div>
            <div id="fileList" class="file-list"></div>
            <div id="fileInfo" class="file-info"></div>
            <div id="compressingIndicator" class="compressing-indicator" style="display:none;">
                <img src="/static/lightning-bolt.png" alt="Processing" class="progress-bolt">
                <p>Processing...</p>
            </div>
            <div id="status" class="status"></div>
            <button id="submitBtn" class="cta-button" disabled>Convert Now</button>
        </section>
        <section class="ad-section">
            <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-9662036547480492" data-ad-format="auto" data-full-width-responsive="true"></ins>
            <script>(adsbygoogle = window.adsbygoogle || []).push({});</script>
        </section>
        <section class="feature-tiles">
            <div class="tile">
                <img src="/static/icons/free.png" alt="Free Icon" class="tile-icon">
                <h3>Free & Powerful</h3>
                <p>Convert and compress up to 5MB for free—no account needed, no hidden fees. Instant access to premium features with a simple upgrade.</p>
            </div>
            <div class="tile">
                <img src="/static/icons/privacy.png" alt="Privacy Icon" class="tile-icon">
                <h3>Unmatched Privacy</h3>
                <p>We don’t sell your emails or store your data. Uploaded files are processed securely and deleted after conversion.</p>
            </div>
            <div class="tile">
                <img src="/static/icons/quality.png" alt="Quality Icon" class="tile-icon">
                <h3>Top-Notch Quality</h3>
                <p>Enjoy crisp, reliable conversions and advanced OCR that turns scans into searchable text with precision.</p>
            </div>
            <div class="tile">
                <img src="/static/icons/ocr.png" alt="OCR Icon" class="tile-icon">
                <h3>Advanced OCR</h3>
                <p>Make scanned PDFs searchable with our premium OCR—accurate, fast, and built for your needs.</p>
            </div>
            <div class="tile">
                <img src="/static/icons/speed.png" alt="Speed Icon" class="tile-icon">
                <h3>Lightning Speed</h3>
                <p>Process files in seconds with our optimized engine—fast conversions without the wait.</p>
            </div>
            <div class="tile">
                <img src="/static/icons/versatility.png" alt="Versatility Icon" class="tile-icon">
                <h3>Versatile Formats</h3>
                <p>Handle PDFs, DOCX, XLSX, PPTX, JPG, and PNG effortlessly—your all-in-one conversion solution.</p>
            </div>
        </section>
    </main>
    <div id="previewModal" class="preview-modal" style="display:none;">
        <div class="preview-content">
            <span id="closePreviewBtn" class="close-btn">×</span>
            <h3>Preview Your File</h3>
            <div id="previewContainer" class="preview-container"></div>
            <button id="downloadBtn" class="preview-btn">Download</button>
        </div>
    </div>
    <footer>
        <p><a href="/terms">Terms and Conditions</a> | <a href="/privacy">Privacy Policy</a> | © 2025 PDF Lightning Processor</p>
    </footer>
    <script>
        document.addEventListener('DOMContentLoaded', () => {
            const fileInput = document.getElementById('fileInput');
            const dropZone = document.getElementById('dropZone');
            const fileList = document.getElementById('fileList');
            const fileInfo = document.getElementById('fileInfo');
            const compressingIndicator = document.getElementById('compressingIndicator');
            const status = document.getElementById('status');
            const submitBtn = document.getElementById('submitBtn');
            const ocrToggle = document.getElementById('ocrToggle');
            const outputFormat = document.getElementById('outputFormat');
            const previewModal = document.getElementById('previewModal');
            const previewContainer = document.getElementById('previewContainer');
            const downloadBtn = document.getElementById('downloadBtn');
            const closePreviewBtn = document.getElementById('closePreviewBtn');
            const darkModeToggle = document.getElementById('darkModeToggle');
            const zapOverlay = document.getElementById('zapOverlay');
            const dropboxBtn = document.getElementById('dropboxBtn');
            const googleDriveBtn = document.getElementById('googleDriveBtn');
            let filesArray = [];
            let dropboxLinks = [];
            let googleFileIds = [];
            let googleToken = '';
            const googleApiKey = 'AIzaSyDh9zqEwYP5Fe-WmfhWnR2nb49jehW-cC8';
            const googleClientId = '136566559701-flq1u12l2o2h7ib6o9gr40fjc8c8fq4e.apps.googleusercontent.com';

            darkModeToggle.addEventListener('click', () => {
                document.body.classList.toggle('dark-mode');
                localStorage.setItem('darkMode', document.body.classList.contains('dark-mode'));
            });
            if (localStorage.getItem('darkMode') === 'true') {
                document.body.classList.add('dark-mode');
            }

            dropZone.addEventListener('dragover', (e) => e.preventDefault());
            dropZone.addEventListener('drop', (e) => {
                e.preventDefault();
                fileInput.files = e.dataTransfer.files;
                zapOverlay.classList.add('zap-active');
                setTimeout(() => zapOverlay.classList.remove('zap-active'), 500);
                updateFileList();
            });
            fileInput.addEventListener('change', updateFileList);
            submitBtn.addEventListener('click', uploadFiles);
            closePreviewBtn.addEventListener('click', () => previewModal.style.display = 'none');

            dropboxBtn.addEventListener('click', () => {
                if (typeof Dropbox === 'undefined') {
                    console.error('Dropbox SDK not loaded');
                    alert('Dropbox SDK failed to load. Please try again.');
                    return;
                }
                Dropbox.choose({
                    success: function(files) {
                        const file = files[0];
                        console.log('Queued Dropbox file:', file);
                        dropboxLinks.push(file.link);
                        filesArray.push({ name: file.name, size: file.bytes, isDropbox: true });
                        updateFileList();
                    },
                    cancel: function() {
                        console.log('Dropbox Chooser cancelled');
                    },
                    linkType: 'direct',
                    multiselect: false,
                    extensions: ['.pdf', '.docx', '.xlsx', '.pptx', '.jpg', '.png']
                });
            });

            googleDriveBtn.addEventListener('click', () => {
                if (!googleToken) {
                    console.log('No Google token, redirecting to auth');
                    window.location.href = '/google-auth';
                } else {
                    console.log('Google token found, loading picker with token:', googleToken.substring(0, 10) + '...');
                    gapi.load('picker', showGooglePicker);
                }
            });

            function showGooglePicker() {
                console.log('Showing Picker with token:', googleToken, 'API Key:', googleApiKey, 'Client ID:', googleClientId);
                const picker = new google.picker.PickerBuilder()
                    .addView(google.picker.ViewId.DOCS)
                    .setOAuthToken(googleToken)
                    .setDeveloperKey(googleApiKey)
                    .setAppId('136566559701')  // Your project number
                    .setOrigin('https://pdflp.com')
                    .enableFeature(google.picker.Feature.NAV_HIDDEN)
                    .setCallback(pickerCallback)
                    .build();
                picker.setVisible(true);
            }

            function pickerCallback(data) {
                console.log('Picker callback data:', data);
                if (data.action === google.picker.Action.PICKED) {
                    const file = data.docs[0];
                    console.log('Queued Google Drive file:', file);
                    googleFileIds.push(file.id);
                    filesArray.push({ name: file.name, size: file.sizeBytes, isGoogle: true });
                    updateFileList();
                } else if (data.action === google.picker.Action.CANCEL) {
                    console.log('Picker cancelled');
                }
            }

            function updateFileList() {
                if (fileInput.files && fileInput.files.length > 0) {
                    Array.from(fileInput.files).forEach(file => {
                        if (/\.(pdf|docx|xlsx|pptx|jpg|png)$/.test(file.name.toLowerCase())) {
                            filesArray.push(file);
                        } else {
                            console.warn('Invalid file filtered out:', file.name);
                            status.textContent = 'Only PDF, DOCX, XLSX, PPTX, JPG, PNG files allowed.';
                            status.style.color = 'orange';
                            status.style.display = 'block';
                            setTimeout(() => status.style.display = 'none', 3000);
                        }
                    });
                }
                filesArray = filesArray.filter(file => {
                    return (file instanceof File && /\.(pdf|docx|xlsx|pptx|jpg|png)$/.test(file.name.toLowerCase())) ||
                           (file.isDropbox && /\.(pdf|docx|xlsx|pptx|jpg|png)$/.test(file.name.toLowerCase())) ||
                           (file.isGoogle && /\.(pdf|docx|xlsx|pptx|jpg|png)$/.test(file.name.toLowerCase()));
                });
                console.log('Files in queue:', filesArray.map(f => ({ name: f.name, size: f.size, isDropbox: f.isDropbox, isGoogle: f.isGoogle })));
                renderFileList();
                updateFileInfo();
                submitBtn.disabled = filesArray.length === 0;
            }

            function renderFileList() {
                fileList.innerHTML = '';
                filesArray.forEach((file, index) => {
                    const div = document.createElement('div');
                    div.className = 'file-item';
                    div.innerHTML = `
                        <input type="text" value="${file.name}" onchange="renameFile(${index}, this.value)">
                        <span>(${(file.size / 1024 / 1024).toFixed(2)} MB${file.isDropbox ? ' [Dropbox]' : file.isGoogle ? ' [Google Drive]' : ''})</span>
                        <button type="button" onclick="removeFile(${index})">Remove</button>
                    `;
                    fileList.appendChild(div);
                });
            }

            function updateFileInfo() {
                const count = filesArray.length;
                const totalSize = filesArray.reduce((sum, file) => sum + file.size, 0) / 1024 / 1024;
                fileInfo.textContent = `${count} file${count !== 1 ? 's' : ''} selected, Total size: ${totalSize.toFixed(2)} MB`;
            }

            function removeFile(index) {
                if (filesArray[index].isDropbox) {
                    dropboxLinks.splice(dropboxLinks.indexOf(filesArray[index].link), 1);
                } else if (filesArray[index].isGoogle) {
                    googleFileIds.splice(googleFileIds.indexOf(filesArray[index].id), 1);
                }
                filesArray.splice(index, 1);
                const dt = new DataTransfer();
                filesArray.filter(f => !f.isDropbox && !f.isGoogle).forEach(file => dt.items.add(file));
                fileInput.files = dt.files;
                updateFileList();
            }

            function renameFile(index, newName) {
                const file = filesArray[index];
                const extMatch = file.name.match(/\.(pdf|docx|xlsx|pptx|jpg|png)$/i);
                const ext = extMatch ? extMatch[0] : '.pdf';
                if (!newName.toLowerCase().endsWith(ext.toLowerCase())) newName += ext;
                if (file.isDropbox) {
                    filesArray[index] = { name: newName, size: file.size, isDropbox: true };
                } else if (file.isGoogle) {
                    filesArray[index] = { name: newName, size: file.size, isGoogle: true };
                } else {
                    filesArray[index] = new File([file], newName, { type: file.type });
                }
                updateFileList();
            }

            function resetUI() {
                console.log('Resetting UI');
                compressingIndicator.style.display = 'none';
                submitBtn.disabled = false;
                filesArray = [];
                dropboxLinks = [];
                googleFileIds = [];
                fileInput.value = '';
                fileList.innerHTML = '';
                fileInfo.textContent = '';
                status.style.display = 'none';
                dropZone.classList.remove('uploading');
            }

            function uploadFiles() {
                if (filesArray.length === 0) {
                    console.error('No files to upload');
                    status.textContent = 'No files selected.';
                    status.style.color = 'red';
                    status.style.display = 'block';
                    return;
                }
                const formData = new FormData();
                filesArray.forEach((file, index) => {
                    if (file.isDropbox) {
                        formData.append('dropbox_link', dropboxLinks[index]);
                    } else if (file.isGoogle) {
                        formData.append('google_file_id', googleFileIds[index]);
                    } else {
                        formData.append('file', file);
                    }
                });
                if (ocrToggle) {
                    formData.append('ocr', ocrToggle.checked);
                }
                formData.append('output_format', outputFormat.value);
                console.log('Uploading files:', filesArray.map(f => f.name), 'Dropbox links:', dropboxLinks, 'Google file IDs:', googleFileIds, 'OCR:', ocrToggle ? ocrToggle.checked : false, 'Output:', outputFormat.value);
                console.log('FormData contents:');
                for (let pair of formData.entries()) {
                    console.log(pair[0] + ': ' + pair[1]);
                }
                compressingIndicator.style.display = 'block';
                status.style.display = 'none';
                submitBtn.disabled = true;
                dropZone.classList.add('uploading');

                fetch('/upload', { method: 'POST', body: formData })
                    .then(response => {
                        if (!response.ok) {
                            return response.text().then(text => { throw new Error(text); });
                        }
                        return response.json();
                    })
                    .then(data => {
                        resetUI();
                        previewModal.style.display = 'flex';
                        if (data.mime_type === 'application/pdf') {
                            previewContainer.innerHTML = `<iframe src="${data.preview_url}" width="100%" height="500px"></iframe>`;
                        } else if (data.mime_type === 'application/vnd.openxmlformats-officedocument.wordprocessingml.document') {
                            previewContainer.innerHTML = `<p class="preview-placeholder">Preview not available for DOCX. Download to view.</p>`;
                        } else if (data.mime_type === 'application/zip') {
                            previewContainer.innerHTML = `<p class="preview-placeholder">Preview not available for ZIP. Download to view multiple files.</p>`;
                        }
                        downloadBtn.onclick = () => {
                            const a = document.createElement('a');
                            a.href = data.preview_url;
                            a.download = data.download_name || 'converted_file';
                            console.log('Downloading:', a.href, 'as', a.download);
                            a.click();
                            previewModal.style.display = 'none';
                        };
                    })
                    .catch(error => {
                        console.error('Fetch error:', error);
                        status.textContent = error.message;
                        status.style.color = 'red';
                        status.style.display = 'block';
                        resetUI();
                    });
            }

            // Check URL params for auth redirect and trigger Picker
            const urlParams = new URLSearchParams(window.location.search);
            if (urlParams.has('code')) {
                console.log('Detected auth redirect, launching Picker with token:', googleToken.substring(0, 10) + '...');
                gapi.load('picker', showGooglePicker);
            }
        });
    </script>
</body>
</html>                               

Whois info of domain

Domain Name: PDFLP.COM
Registry Domain ID: 2972085344_DOMAIN_COM-VRSN
Registrar WHOIS Server: whois.namecheap.com
Registrar URL: http://www.namecheap.com
Updated Date: 2025-04-03T04:07:46Z
Creation Date: 2025-04-03T04:07:43Z
Registry Expiry Date: 2026-04-03T04:07:43Z
Registrar: NameCheap, Inc.
Registrar IANA ID: 1068
Registrar Abuse Contact Email: [email protected]
Registrar Abuse Contact Phone: +1.6613102107
Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
Name Server: DNS1.REGISTRAR-SERVERS.COM
Name Server: DNS2.REGISTRAR-SERVERS.COM
DNSSEC: unsigned
URL of the ICANN Whois Inaccuracy Complaint Form: https://www.icann.org/wicf/
>>> Last update of whois database: 2025-05-18T21:34:57Z <<<
For more information on Whois status codes, please visit https://icann.org/epp
NOTICE: The expiration date displayed in this record is the date the
TERMS OF USE: You are not authorized to access or query our Whois
by the following terms of use: You agree that you may use this Data only
to: (1) allow, enable, or otherwise support the transmission of mass