Codeware Compress ((free)) Download New

A TitanOfOld dev blog

Codeware Compress ((free)) Download New

by Codeware is widely considered the industry standard for ASME Section VIII pressure vessel design and heat exchanger analysis. The latest 2026 release

(Build 8110 and newer) continues to prioritize engineering productivity by automating complex ASME code compliance. Pressure Vessel Software For ASME VIII - Codeware

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
  <title>Codeware Compress | Smart ZIP Utility</title>
  <!-- Font Awesome 6 (free icons) -->
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
  <style>
    * 
      margin: 0;
      padding: 0;
      box-sizing: border-box;
body 
      background: linear-gradient(145deg, #0b1120 0%, #111827 100%);
      font-family: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif;
      min-height: 100vh;
      display: flex;
      justify-content: center;
      align-items: center;
      padding: 2rem 1.5rem;
/* main card */
    .codeware-card 
      max-width: 1300px;
      width: 100%;
      background: rgba(18, 25, 45, 0.75);
      backdrop-filter: blur(12px);
      border-radius: 3rem;
      box-shadow: 0 25px 45px -12px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(66, 153, 225, 0.2);
      overflow: hidden;
      transition: all 0.2s ease;
/* header branding */
    .brand-header 
      padding: 1.8rem 2.5rem;
      background: rgba(10, 14, 23, 0.6);
      border-bottom: 1px solid rgba(56, 189, 248, 0.25);
      display: flex;
      flex-wrap: wrap;
      justify-content: space-between;
      align-items: center;
      gap: 1rem;
.logo-area 
      display: flex;
      align-items: center;
      gap: 0.75rem;
.logo-icon 
      font-size: 2.2rem;
      color: #38bdf8;
      filter: drop-shadow(0 0 6px #0ea5e9);
.brand-title 
      font-size: 1.8rem;
      font-weight: 700;
      background: linear-gradient(135deg, #FFFFFF, #94a3f8);
      background-clip: text;
      -webkit-background-clip: text;
      color: transparent;
      letter-spacing: -0.3px;
.badge-new 
      background: #0f2c3b;
      color: #7dd3fc;
      font-size: 0.75rem;
      font-weight: 600;
      padding: 0.25rem 0.75rem;
      border-radius: 40px;
      border: 1px solid #38bdf8;
      margin-left: 0.75rem;
      vertical-align: middle;
      display: inline-block;
.header-stats 
      background: #0f172ab3;
      padding: 0.5rem 1rem;
      border-radius: 60px;
      font-size: 0.85rem;
      font-weight: 500;
      color: #cbd5e6;
.header-stats i 
      margin-right: 6px;
      color: #38bdf8;
/* main two column layout */
    .compress-layout 
      display: flex;
      flex-wrap: wrap;
      padding: 2rem 2rem 2rem 2rem;
      gap: 2rem;
.upload-panel 
      flex: 1.4;
      min-width: 260px;
.settings-panel 
      flex: 1;
      min-width: 260px;
      background: rgba(15, 23, 42, 0.5);
      border-radius: 1.8rem;
      padding: 1.5rem;
      backdrop-filter: blur(4px);
      border: 1px solid rgba(71, 85, 105, 0.4);
/* dropzone */
    .dropzone 
      background: rgba(0, 0, 0, 0.3);
      border: 2px dashed #3b82f6;
      border-radius: 2rem;
      padding: 2rem 1.5rem;
      text-align: center;
      cursor: pointer;
      transition: all 0.2s;
      margin-bottom: 1.5rem;
.dropzone.drag-over 
      background: #1e293bc9;
      border-color: #60a5fa;
      transform: scale(0.99);
.dropzone i 
      font-size: 3rem;
      color: #60a5fa;
      margin-bottom: 0.75rem;
.dropzone p 
      color: #cbd5e1;
      font-weight: 500;
.file-input-hidden 
      display: none;
/* file list */
    .file-list-container 
      background: #0f172a80;
      border-radius: 1.5rem;
      padding: 0.8rem;
      max-height: 320px;
      overflow-y: auto;
.file-item 
      background: #1e293b;
      margin: 0.5rem 0;
      padding: 0.7rem 1rem;
      border-radius: 1rem;
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 0.8rem;
      transition: 0.1s;
      border-left: 4px solid #3b82f6;
.file-info 
      display: flex;
      align-items: center;
      gap: 0.6rem;
      flex: 1;
      overflow: hidden;
.file-info i 
      font-size: 1.3rem;
      color: #94a3b8;
.file-name 
      font-size: 0.85rem;
      font-weight: 500;
      color: #e2e8f0;
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
.file-size 
      font-size: 0.7rem;
      color: #94a3b8;
      margin-left: 0.5rem;
.remove-file 
      background: none;
      border: none;
      color: #f87171;
      cursor: pointer;
      font-size: 1rem;
      padding: 0 6px;
      transition: 0.1s;
.remove-file:hover 
      color: #ef4444;
      transform: scale(1.1);
/* compress options */
    .option-group 
      margin-bottom: 1.8rem;
.option-label 
      display: flex;
      align-items: center;
      gap: 8px;
      color: #cbd5e6;
      font-weight: 500;
      margin-bottom: 0.7rem;
select, input[type="range"] 
      width: 100%;
      background: #0f172a;
      border: 1px solid #334155;
      padding: 0.6rem 1rem;
      border-radius: 1rem;
      color: white;
      font-weight: 500;
      outline: none;
.level-value 
      display: inline-block;
      background: #0f172a;
      padding: 0.2rem 0.7rem;
      border-radius: 30px;
      font-size: 0.8rem;
      margin-left: 8px;
.action-buttons 
      display: flex;
      flex-direction: column;
      gap: 1rem;
      margin-top: 2rem;
.btn 
      border: none;
      padding: 0.8rem 1.2rem;
      border-radius: 2rem;
      font-weight: 600;
      font-size: 1rem;
      cursor: pointer;
      transition: 0.15s;
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 10px;
.btn-primary 
      background: linear-gradient(95deg, #2563eb, #3b82f6);
      color: white;
      box-shadow: 0 4px 12px rgba(37, 99, 235, 0.3);
.btn-primary:hover:not(:disabled) 
      background: linear-gradient(95deg, #3b82f6, #60a5fa);
      transform: translateY(-2px);
.btn-outline 
      background: transparent;
      border: 1px solid #475569;
      color: #e2e8f0;
.btn-outline:hover:not(:disabled) 
      background: #1e293b;
      border-color: #3b82f6;
.btn:disabled 
      opacity: 0.5;
      cursor: not-allowed;
.status-area 
      margin-top: 1.5rem;
      background: #0a0f1c;
      border-radius: 1.2rem;
      padding: 0.8rem 1rem;
      font-size: 0.8rem;
      color: #9ca3af;
      text-align: center;
.success 
      color: #4ade80;
.error 
      color: #f87171;
/* responsive */
    @media (max-width: 780px) 
      .compress-layout 
        flex-direction: column;
        padding: 1rem;
.brand-header 
        flex-direction: column;
        align-items: start;
footer 
      padding: 1rem 2rem 1.5rem;
      text-align: center;
      font-size: 0.7rem;
      color: #4b5563;
      border-top: 1px solid #1e293b;
</style>
</head>
<body>
<div class="codeware-card">
  <div class="brand-header">
    <div class="logo-area">
      <i class="fas fa-cubes logo-icon"></i>
      <span class="brand-title">CodeWare Compress <span class="badge-new"><i class="fas fa-bolt"></i> NEW</span></span>
    </div>
    <div class="header-stats">
      <i class="fas fa-file-zipper"></i> Smart ZIP engine · Lossless · On‑the‑fly
    </div>
  </div>
<div class="compress-layout">
    <!-- LEFT: File upload & list -->
    <div class="upload-panel">
      <div class="dropzone" id="dropzone">
        <i class="fas fa-cloud-upload-alt"></i>
        <p>Drag & drop files or click to browse</p>
        <small style="color:#6b7280">Supports images, documents, any binary · up to 50MB each</small>
        <input type="file" id="fileInput" multiple class="file-input-hidden">
      </div>
      <div class="file-list-container" id="fileListContainer">
        <div style="text-align:center; padding:1rem; color:#6b7280;">
          <i class="fas fa-inbox"></i> No files added
        </div>
      </div>
    </div>
<!-- RIGHT: compression settings & download -->
    <div class="settings-panel">
      <div class="option-group">
        <div class="option-label"><i class="fas fa-chart-line"></i> Compression level</div>
        <input type="range" id="compressLevel" min="0" max="9" value="6" step="1">
        <div style="display: flex; justify-content: space-between; margin-top: 6px;">
          <span style="font-size:0.7rem;">Speed (0)</span>
          <span style="font-size:0.7rem;">Balanced</span>
          <span style="font-size:0.7rem;">Ultra (9)</span>
        </div>
        <div style="margin-top: 6px;"><span id="levelDisplay" class="level-value">Level 6 (Default)</span></div>
      </div>
<div class="option-group">
        <div class="option-label"><i class="fas fa-archive"></i> Archive name</div>
        <input type="text" id="archiveName" value="codeware_archive" placeholder="archive name">
        <small style="color:#6b7280">.zip will be added automatically</small>
      </div>
<div class="action-buttons">
        <button id="compressBtn" class="btn btn-primary"><i class="fas fa-compress-alt"></i> Compress & Prepare</button>
        <button id="downloadBtn" class="btn btn-outline" disabled><i class="fas fa-download"></i> Download ZIP</button>
      </div>
      <div id="statusMessage" class="status-area">
        <i class="fas fa-info-circle"></i> Ready. Add files and compress.
      </div>
    </div>
  </div>
  <footer>
    <i class="fas fa-shield-alt"></i> Client-side compression using JSZip · Files never leave your device
  </footer>
</div>
<!-- JSZip library from CDN -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js"></script>
<!-- FileSaver.js for download trigger -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/2.0.5/FileSaver.min.js"></script>
<script>
  // ---------- DOM elements ----------
  const dropzone = document.getElementById('dropzone');
  const fileInput = document.getElementById('fileInput');
  const fileListContainer = document.getElementById('fileListContainer');
  const compressLevelSlider = document.getElementById('compressLevel');
  const levelDisplaySpan = document.getElementById('levelDisplay');
  const archiveNameInput = document.getElementById('archiveName');
  const compressBtn = document.getElementById('compressBtn');
  const downloadBtn = document.getElementById('downloadBtn');
  const statusDiv = document.getElementById('statusMessage');
// ---------- state management ----------
  let selectedFiles = [];       // stores File objects
  let lastCompressedBlob = null;   // stores generated zip blob after compression
  let lastArchiveName = '';         // last generated archive base name
// Helper: update file list UI
  function renderFileList() 
    if (!fileListContainer) return;
    if (selectedFiles.length === 0) 
      fileListContainer.innerHTML = `<div style="text-align:center; padding:1rem; color:#6b7280;">
        <i class="fas fa-inbox"></i> No files added
      </div>`;
      return;
const listHtml = selectedFiles.map((file, idx) => 
      const sizeBytes = file.size;
      const sizeStr = formatBytes(sizeBytes);
      // icon based on type
      let fileIcon = '<i class="fas fa-file"></i>';
      if (file.type.startsWith('image/')) fileIcon = '<i class="fas fa-image"></i>';
      else if (file.type.includes('pdf')) fileIcon = '<i class="fas fa-file-pdf"></i>';
      else if (file.type.includes('zip')) fileIcon = '<i class="fas fa-file-archive"></i>';
      else if (file.type.includes('text')) fileIcon = '<i class="fas fa-file-alt"></i>';
      return `
        <div class="file-item" data-index="$idx">
          <div class="file-info">
            $fileIcon
            <span class="file-name" title="$escapeHtml(file.name)">$escapeHtml(file.name)</span>
            <span class="file-size">$sizeStr</span>
          </div>
          <button class="remove-file" data-index="$idx" aria-label="Remove file"><i class="fas fa-trash-alt"></i></button>
        </div>
      `;
    ).join('');
    fileListContainer.innerHTML = listHtml;
// attach remove event listeners
    document.querySelectorAll('.remove-file').forEach(btn => 
      btn.addEventListener('click', (e) => 
        e.stopPropagation();
        const idx = parseInt(btn.getAttribute('data-index'), 10);
        if (!isNaN(idx) && idx >= 0 && idx < selectedFiles.length) 
          selectedFiles.splice(idx, 1);
          renderFileList();
          invalidateCompressedData();
          updateStatus('info', 'File removed. Re-run compression to update archive.');
);
    );
// simple sanitizer
  function escapeHtml(str) 
    return str.replace(/[&<>]/g, function(m) 
      if (m === '&') return '&';
      if (m === '<') return '<';
      if (m === '>') return '>';
      return m;
    );
function formatBytes(bytes, decimals = 1) 
    if (bytes === 0) return '0 Bytes';
    const k = 1024;
    const dm = decimals < 0 ? 0 : decimals;
    const sizes = ['Bytes', 'KB', 'MB', 'GB'];
    const i = Math.floor(Math.log(bytes) / Math.log(k));
    return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
// reset compression state
  function invalidateCompressedData() 
    if (lastCompressedBlob) 
      lastCompressedBlob = null;
downloadBtn.disabled = true;
function updateStatus(type, msg) 
    statusDiv.innerHTML = `<i class="fas $type === 'success' ? 'fa-check-circle' : (type === 'error' ? 'fa-exclamation-triangle' : 'fa-info-circle')"></i> $msg`;
    if (type === 'success') statusDiv.classList.add('success');
    else if (type === 'error') statusDiv.classList.add('error');
    else 
      statusDiv.classList.remove('success', 'error');
// add files (deduplicate by name + size? basic merge)
  function addFiles(filesArray)  filesArray.length === 0) return;
    let addedCount = 0;
    for (let file of filesArray) 
      // Avoid duplicates: check same name and same size (simplistic)
      const exists = selectedFiles.some(f => f.name === file.name && f.size === file.size);
      if (!exists) 
        selectedFiles.push(file);
        addedCount++;
       else 
        // skip duplicate
        console.log(`Duplicate skipped: $file.name`);
if (addedCount > 0) 
      renderFileList();
      invalidateCompressedData();
      updateStatus('info', `$addedCount file(s) added. Click "Compress & Prepare".`);
     else if (filesArray.length > 0) 
      updateStatus('info', 'All files already in list (duplicates ignored).');
// drag & drop handlers
  dropzone.addEventListener('click', () => fileInput.click());
  dropzone.addEventListener('dragover', (e) => 
    e.preventDefault();
    dropzone.classList.add('drag-over');
  );
  dropzone.addEventListener('dragleave', () => 
    dropzone.classList.remove('drag-over');
  );
  dropzone.addEventListener('drop', (e) => 
    e.preventDefault();
    dropzone.classList.remove('drag-over');
    const items = e.dataTransfer.files;
    if (items && items.length) 
      addFiles(Array.from(items));
);
  fileInput.addEventListener('change', (e) => 
    if (e.target.files && e.target.files.length) 
      addFiles(Array.from(e.target.files));
      fileInput.value = ''; // allow re-upload same files
);
// compression level display
  function updateLevelDisplay() 
    const level = parseInt(compressLevelSlider.value, 10);
    let desc = '';
    if (level === 0) desc = 'Store (no compression)';
    else if (level <= 3) desc = 'Fast (speed)';
    else if (level <= 6) desc = 'Balanced';
    else desc = 'Maximum (ultra)';
    levelDisplaySpan.innerText = `Level $level · $desc`;
compressLevelSlider.addEventListener('input', () => 
    updateLevelDisplay();
    invalidateCompressedData();
    updateStatus('info', 'Compression level changed. Re-run compression.');
  );
  updateLevelDisplay();
archiveNameInput.addEventListener('input', () => 
    if (lastCompressedBlob) invalidateCompressedData();
    updateStatus('info', 'Archive name changed. Recompress to apply.');
  );
// ---- CORE COMPRESSION LOGIC (using JSZip) ----
  async function performCompression() ]/g, '_');
    const finalZipName = `$baseName.zip`;
updateStatus('info', `Compressing $selectedFiles.length file(s) with level $level ...`);
    compressBtn.disabled = true;
    downloadBtn.disabled = true;
try 
      const zip = new JSZip();
      // set compression options: DEFLATE with specified level
      // JSZip level: 1-9 (0 means no compression but we handle separately)
      let compressionOpt = 'DEFLATE';
      let compressionLevel = level;
      if (level === 0) 
        // For level 0: store method (no compression)
        compressionOpt = 'STORE';
        compressionLevel = null;
// Add each file asynchronously
      for (const file of selectedFiles) 
        // read file as ArrayBuffer for maximum compatibility
        const arrayBuffer = await file.arrayBuffer();
        // add file to zip folder (flat structure)
        if (compressionOpt === 'STORE') 
          zip.file(file.name, arrayBuffer,  compression: 'STORE' );
         else 
          zip.file(file.name, arrayBuffer,  compression: 'DEFLATE', compressionOptions:  level: compressionLevel  );
// generate blob (asynchronous)
      const zipBlob = await zip.generateAsync( 
        type: "blob",
        compression: compressionOpt === 'STORE' ? 'STORE' : 'DEFLATE',
        compressionOptions: compressionOpt === 'DEFLATE' ?  level: compressionLevel  : null
      );
lastCompressedBlob = zipBlob;
      lastArchiveName = finalZipName;
const originalTotal = selectedFiles.reduce((sum, f) => sum + f.size, 0);
      const compressedSize = zipBlob.size;
      const ratio = originalTotal > 0 ? ((1 - compressedSize / originalTotal) * 100).toFixed(1) : 0;
      let ratioMsg = ratio >= 0 ? `Saved ~$ratio%` : `Size increased ($Math.abs(ratio)%)`;
      updateStatus('success', `Compression done! $formatBytes(originalTotal) → $formatBytes(compressedSize). $ratioMsg. Ready to download.`);
      downloadBtn.disabled = false;
      return true;
     catch (err) 
      console.error(err);
      updateStatus('error', `Compression failed: $err.message `);
      lastCompressedBlob = null;
      downloadBtn.disabled = true;
      return false;
     finally 
      compressBtn.disabled = false;
// download handler
  function downloadZip()
// attach event listeners
  compressBtn.addEventListener('click', async () => 
    await performCompression();
  );
  downloadBtn.addEventListener('click', () => 
    if (lastCompressedBlob) downloadZip();
    else updateStatus('error', 'No archive ready. Click "Compress & Prepare" first.');
  );
// additional: clear all button? not needed but optional but we add little feature: reset by double-click header? no, but ensure new experience
  // small initialization: prevent bad naming
  window.addEventListener('load', () => 
    renderFileList();
    updateStatus('info', '✨ New CodeWare Compress ready. Drop files, adjust level, compress & download.');
    // demo tip
  );
</script>
</body>
</html>

Codeware recently released the 2026 update for COMPRESS, its industry-standard ASME Section VIII pressure vessel design software. The new version, available for download as of early 2026, focuses on streamlining compliance with the latest engineering codes and improving CAD integration. What’s New in COMPRESS 2026

The latest build continues to automate complex ASME Boiler and Pressure Vessel Code (BPVC) calculations. Key areas of focus for this year's release cycle include:

Updated Code Compliance: Full support for the most recent ASME VIII, IBC, and API 650 standards.

Enhanced Integration: Improvements to the Codeware Interface (CWI), the CAD add-in that automatically generates 3D solid models and 2D drawings in Autodesk Inventor from COMPRESS designs. codeware compress download new

Productivity Tools: New features for "Quick Design" options and enhanced nozzle copy/paste functionality to reduce repetitive modeling tasks. How to Download the New Version

To access the latest version of COMPRESS or the Codeware Interface:

Visit the Support Center: Navigate to the Codeware Support Center Downloads page.

Log In: You must have an active Support and Update Service (SUS) contract to download new builds. If you lack credentials, you can request an account via sus@codeware.com.

Run the Installer: The new installer is designed to automatically detect and migrate your existing user-defined materials and custom nozzle loadings from previous versions. by Codeware is widely considered the industry standard

License Activation: If you are transitioning to a dongle-free setup, use the Codeware License Activator utility provided on the same page. Technical Capabilities

COMPRESS remains a "rating" and "design" tool, meaning it doesn't just check if a design works—it can also size components (shells, heads, nozzles) to meet specific pressure requirements. The software also supports API 579 Fitness-For-Service through its sister application, INSPECT, which is often updated in tandem with COMPRESS. What's New in COMPRESS 2019 - Codeware

Note: If you meant a specific existing software (e.g., for HMI/PLC programming, or a different utility), please let me know so I can adjust the technical details. This post treats "CodeWare Compress" as a specialized data/file compression system for technical environments.


2.2. Cloud-Ready Compression

The new build includes native integration with AWS S3, Google Cloud Storage, and Azure Blob. You can now compress data before upload directly from the GUI or CLI.

5.2. Split Archives for Cloud Upload

Use the new --split feature to break a 10GB archive into 1GB chunks: Codeware recently released the 2026 update for COMPRESS

codeware compress bigfile.iso --split 1GB --output backup.cwa

Q1: Is the free download really free?

Yes. The free edition has no time limit but restricts individual file compression to 500MB and disables cloud sync.

Step 4: Verify the Checksum (For Security)

After the download completes, verify file integrity. The official site provides SHA-256 hashes. Example for Windows:

certutil -hashfile codeware_compress_5.2.4_win64.exe SHA256

Compare the output with the hash on the download page. If they match, your file is legitimate.

How to Get the New Download Feature

If you’re an existing CodeWare Compress user:

  1. Open the application and navigate to Help > Check for Updates.
  2. Download and install the v3.2.1 runtime (approximately 45 MB).
  3. Restart the service. The "New Download" button will appear in the job toolbar.

For new users: