<?xml version='1.0' encoding='utf-8'?>
<FilingSummary>
  <Version>3.26.1</Version>
  <ProcessingTime/>
  <ReportFormat>html</ReportFormat>
  <ContextCount>198</ContextCount>
  <ElementCount>362</ElementCount>
  <EntityCount>1</EntityCount>
  <FootnotesReported>false</FootnotesReported>
  <SegmentCount>75</SegmentCount>
  <ScenarioCount>0</ScenarioCount>
  <TuplesReported>false</TuplesReported>
  <UnitCount>7</UnitCount>
  <MyReports>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R1.htm</HtmlFileName>
      <LongName>0000001 - Document - Cover Page</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/CoverPage</Role>
      <ShortName>Cover Page</ShortName>
      <MenuCategory>Cover</MenuCategory>
      <Position>1</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R2.htm</HtmlFileName>
      <LongName>9952151 - Statement - Unaudited Condensed Consolidated Balance Sheets</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/UnauditedCondensedConsolidatedBalanceSheets</Role>
      <ShortName>Unaudited Condensed Consolidated Balance Sheets</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>2</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R3.htm</HtmlFileName>
      <LongName>9952152 - Statement - Unaudited Condensed Consolidated Balance Sheets (Parenthetical)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/UnauditedCondensedConsolidatedBalanceSheetsParenthetical</Role>
      <ShortName>Unaudited Condensed Consolidated Balance Sheets (Parenthetical)</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>3</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R4.htm</HtmlFileName>
      <LongName>9952153 - Statement - Unaudited Condensed Consolidated Statements of Operations</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/UnauditedCondensedConsolidatedStatementsofOperations</Role>
      <ShortName>Unaudited Condensed Consolidated Statements of Operations</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>4</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R5.htm</HtmlFileName>
      <LongName>9952154 - Statement - Unaudited Condensed Consolidated Statements of Comprehensive Income (Loss)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/UnauditedCondensedConsolidatedStatementsofComprehensiveIncomeLoss</Role>
      <ShortName>Unaudited Condensed Consolidated Statements of Comprehensive Income (Loss)</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>5</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R6.htm</HtmlFileName>
      <LongName>9952155 - Statement - Unaudited Condensed Consolidated Statements of Shareholders' Equity</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/UnauditedCondensedConsolidatedStatementsofShareholdersEquity</Role>
      <ShortName>Unaudited Condensed Consolidated Statements of Shareholders' Equity</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>6</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R7.htm</HtmlFileName>
      <LongName>9952156 - Statement - Unaudited Condensed Consolidated Statements of Cash Flows</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/UnauditedCondensedConsolidatedStatementsofCashFlows</Role>
      <ShortName>Unaudited Condensed Consolidated Statements of Cash Flows</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>7</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R8.htm</HtmlFileName>
      <LongName>9952157 - Disclosure - Organization and significant accounting policies</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/Organizationandsignificantaccountingpolicies</Role>
      <ShortName>Organization and significant accounting policies</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>8</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R9.htm</HtmlFileName>
      <LongName>9952158 - Disclosure - Acquisition</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/Acquisition</Role>
      <ShortName>Acquisition</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>9</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R10.htm</HtmlFileName>
      <LongName>9952159 - Disclosure - Discontinued operations</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/Discontinuedoperations</Role>
      <ShortName>Discontinued operations</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>10</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R11.htm</HtmlFileName>
      <LongName>9952160 - Disclosure - Fair value measurement</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/Fairvaluemeasurement</Role>
      <ShortName>Fair value measurement</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>11</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R12.htm</HtmlFileName>
      <LongName>9952161 - Disclosure - Investments</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/Investments</Role>
      <ShortName>Investments</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>12</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R13.htm</HtmlFileName>
      <LongName>9952162 - Disclosure - Inventories</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/Inventories</Role>
      <ShortName>Inventories</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>13</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R14.htm</HtmlFileName>
      <LongName>9952163 - Disclosure - Leases</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/Leases</Role>
      <ShortName>Leases</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>14</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R15.htm</HtmlFileName>
      <LongName>9952164 - Disclosure - Property and equipment, net</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/Propertyandequipmentnet</Role>
      <ShortName>Property and equipment, net</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>15</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R16.htm</HtmlFileName>
      <LongName>9952165 - Disclosure - Goodwill and intangible assets</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/Goodwillandintangibleassets</Role>
      <ShortName>Goodwill and intangible assets</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>16</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R17.htm</HtmlFileName>
      <LongName>9952166 - Disclosure - Accrued expenses and other current liabilities</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/Accruedexpensesandothercurrentliabilities</Role>
      <ShortName>Accrued expenses and other current liabilities</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>17</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R18.htm</HtmlFileName>
      <LongName>9952167 - Disclosure - Commitments and contingencies</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/Commitmentsandcontingencies</Role>
      <ShortName>Commitments and contingencies</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>18</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R19.htm</HtmlFileName>
      <LongName>9952168 - Disclosure - Long-term debt</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/Longtermdebt</Role>
      <ShortName>Long-term debt</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>19</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R20.htm</HtmlFileName>
      <LongName>9952169 - Disclosure - Stock-based compensation</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/Stockbasedcompensation</Role>
      <ShortName>Stock-based compensation</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>20</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R21.htm</HtmlFileName>
      <LongName>9952170 - Disclosure - Income taxes</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/Incometaxes</Role>
      <ShortName>Income taxes</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>21</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R22.htm</HtmlFileName>
      <LongName>9952171 - Disclosure - Net income from continuing operations per common share</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/Netincomefromcontinuingoperationspercommonshare</Role>
      <ShortName>Net income from continuing operations per common share</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>22</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R23.htm</HtmlFileName>
      <LongName>9952172 - Disclosure - Segment, customer, and geographic information</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/Segmentcustomerandgeographicinformation</Role>
      <ShortName>Segment, customer, and geographic information</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>23</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R24.htm</HtmlFileName>
      <LongName>9952173 - Disclosure - Employee benefit plan</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/Employeebenefitplan</Role>
      <ShortName>Employee benefit plan</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>24</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R25.htm</HtmlFileName>
      <LongName>9952174 - Disclosure - Subsequent events</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/Subsequentevents</Role>
      <ShortName>Subsequent events</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>25</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R26.htm</HtmlFileName>
      <LongName>995445 - Disclosure - Insider Trading Arrangements</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements</Role>
      <ShortName>Insider Trading Arrangements</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>26</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R27.htm</HtmlFileName>
      <LongName>9955511 - Disclosure - Organization and significant accounting policies (Policies)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/OrganizationandsignificantaccountingpoliciesPolicies</Role>
      <ShortName>Organization and significant accounting policies (Policies)</ShortName>
      <MenuCategory>Policies</MenuCategory>
      <Position>27</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R28.htm</HtmlFileName>
      <LongName>9955512 - Disclosure - Acquisition (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/AcquisitionTables</Role>
      <ShortName>Acquisition (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.biolifesolutions.com/role/Acquisition</ParentRole>
      <Position>28</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R29.htm</HtmlFileName>
      <LongName>9955513 - Disclosure - Discontinued operations (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/DiscontinuedoperationsTables</Role>
      <ShortName>Discontinued operations (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.biolifesolutions.com/role/Discontinuedoperations</ParentRole>
      <Position>29</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R30.htm</HtmlFileName>
      <LongName>9955514 - Disclosure - Fair value measurement (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/FairvaluemeasurementTables</Role>
      <ShortName>Fair value measurement (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.biolifesolutions.com/role/Fairvaluemeasurement</ParentRole>
      <Position>30</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R31.htm</HtmlFileName>
      <LongName>9955515 - Disclosure - Investments (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/InvestmentsTables</Role>
      <ShortName>Investments (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.biolifesolutions.com/role/Investments</ParentRole>
      <Position>31</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R32.htm</HtmlFileName>
      <LongName>9955516 - Disclosure - Inventories (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/InventoriesTables</Role>
      <ShortName>Inventories (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.biolifesolutions.com/role/Inventories</ParentRole>
      <Position>32</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R33.htm</HtmlFileName>
      <LongName>9955517 - Disclosure - Leases (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/LeasesTables</Role>
      <ShortName>Leases (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.biolifesolutions.com/role/Leases</ParentRole>
      <Position>33</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R34.htm</HtmlFileName>
      <LongName>9955518 - Disclosure - Property and equipment, net (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/PropertyandequipmentnetTables</Role>
      <ShortName>Property and equipment, net (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.biolifesolutions.com/role/Propertyandequipmentnet</ParentRole>
      <Position>34</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R35.htm</HtmlFileName>
      <LongName>9955519 - Disclosure - Goodwill and intangible assets (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/GoodwillandintangibleassetsTables</Role>
      <ShortName>Goodwill and intangible assets (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.biolifesolutions.com/role/Goodwillandintangibleassets</ParentRole>
      <Position>35</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R36.htm</HtmlFileName>
      <LongName>9955520 - Disclosure - Accrued expenses and other current liabilities (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/AccruedexpensesandothercurrentliabilitiesTables</Role>
      <ShortName>Accrued expenses and other current liabilities (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.biolifesolutions.com/role/Accruedexpensesandothercurrentliabilities</ParentRole>
      <Position>36</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R37.htm</HtmlFileName>
      <LongName>9955521 - Disclosure - Long-term debt (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/LongtermdebtTables</Role>
      <ShortName>Long-term debt (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.biolifesolutions.com/role/Longtermdebt</ParentRole>
      <Position>37</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R38.htm</HtmlFileName>
      <LongName>9955522 - Disclosure - Stock-based compensation (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/StockbasedcompensationTables</Role>
      <ShortName>Stock-based compensation (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.biolifesolutions.com/role/Stockbasedcompensation</ParentRole>
      <Position>38</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R39.htm</HtmlFileName>
      <LongName>9955523 - Disclosure - Net income from continuing operations per common share (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/NetincomefromcontinuingoperationspercommonshareTables</Role>
      <ShortName>Net income from continuing operations per common share (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.biolifesolutions.com/role/Netincomefromcontinuingoperationspercommonshare</ParentRole>
      <Position>39</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R40.htm</HtmlFileName>
      <LongName>9955524 - Disclosure - Segment, customer, and geographic information (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/SegmentcustomerandgeographicinformationTables</Role>
      <ShortName>Segment, customer, and geographic information (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.biolifesolutions.com/role/Segmentcustomerandgeographicinformation</ParentRole>
      <Position>40</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R41.htm</HtmlFileName>
      <LongName>9955525 - Disclosure - Organization and significant accounting policies (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/OrganizationandsignificantaccountingpoliciesDetails</Role>
      <ShortName>Organization and significant accounting policies (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.biolifesolutions.com/role/OrganizationandsignificantaccountingpoliciesPolicies</ParentRole>
      <Position>41</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R42.htm</HtmlFileName>
      <LongName>9955526 - Disclosure - Acquisition - Narrative (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/AcquisitionNarrativeDetails</Role>
      <ShortName>Acquisition - Narrative (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>42</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R43.htm</HtmlFileName>
      <LongName>9955527 - Disclosure - Acquisition - Schedule of Acquisition (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/AcquisitionScheduleofAcquisitionDetails</Role>
      <ShortName>Acquisition - Schedule of Acquisition (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>43</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R44.htm</HtmlFileName>
      <LongName>9955528 - Disclosure - Discontinued operations - Schedule of Divestiture (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/DiscontinuedoperationsScheduleofDivestitureDetails</Role>
      <ShortName>Discontinued operations - Schedule of Divestiture (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>44</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R45.htm</HtmlFileName>
      <LongName>9955529 - Disclosure - Discontinued operations - Narrative (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/DiscontinuedoperationsNarrativeDetails</Role>
      <ShortName>Discontinued operations - Narrative (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>45</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R46.htm</HtmlFileName>
      <LongName>9955530 - Disclosure - Discontinued operations - Schedule of Key Components of Loss from Discontinued Operations (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/DiscontinuedoperationsScheduleofKeyComponentsofLossfromDiscontinuedOperationsDetails</Role>
      <ShortName>Discontinued operations - Schedule of Key Components of Loss from Discontinued Operations (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>46</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R47.htm</HtmlFileName>
      <LongName>9955531 - Disclosure - Discontinued operations - Schedule of Noncash Related Costs For Discontinued Operations (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/DiscontinuedoperationsScheduleofNoncashRelatedCostsForDiscontinuedOperationsDetails</Role>
      <ShortName>Discontinued operations - Schedule of Noncash Related Costs For Discontinued Operations (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>47</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R48.htm</HtmlFileName>
      <LongName>9955532 - Disclosure - Fair value measurement - Schedule of the Company's Financial Assets and Liabilities Measured at Fair Value on a Recurring Basis (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/FairvaluemeasurementScheduleoftheCompanysFinancialAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetails</Role>
      <ShortName>Fair value measurement - Schedule of the Company's Financial Assets and Liabilities Measured at Fair Value on a Recurring Basis (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>48</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R49.htm</HtmlFileName>
      <LongName>9955533 - Disclosure - Fair value measurement - Narrative (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/FairvaluemeasurementNarrativeDetails</Role>
      <ShortName>Fair value measurement - Narrative (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>49</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R50.htm</HtmlFileName>
      <LongName>9955534 - Disclosure - Investments - Schedule of Available-for-Sale Marketable Securities (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/InvestmentsScheduleofAvailableforSaleMarketableSecuritiesDetails</Role>
      <ShortName>Investments - Schedule of Available-for-Sale Marketable Securities (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>50</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R51.htm</HtmlFileName>
      <LongName>9955535 - Disclosure - Investments - Schedule of Debt Securities, Available-for-Sale, Unrealized Loss Position, Fair Value (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/InvestmentsScheduleofDebtSecuritiesAvailableforSaleUnrealizedLossPositionFairValueDetails</Role>
      <ShortName>Investments - Schedule of Debt Securities, Available-for-Sale, Unrealized Loss Position, Fair Value (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>51</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R52.htm</HtmlFileName>
      <LongName>9955536 - Disclosure - Investments - Narrative (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/InvestmentsNarrativeDetails</Role>
      <ShortName>Investments - Narrative (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>52</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R53.htm</HtmlFileName>
      <LongName>9955537 - Disclosure - Inventories (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/InventoriesDetails</Role>
      <ShortName>Inventories (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.biolifesolutions.com/role/InventoriesTables</ParentRole>
      <Position>53</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R54.htm</HtmlFileName>
      <LongName>9955538 - Disclosure - Leases - Narrative (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/LeasesNarrativeDetails</Role>
      <ShortName>Leases - Narrative (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>54</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R55.htm</HtmlFileName>
      <LongName>9955539 - Disclosure - Leases - Schedule of Operating and Finance Lease Terms and Discount Rates (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/LeasesScheduleofOperatingandFinanceLeaseTermsandDiscountRatesDetails</Role>
      <ShortName>Leases - Schedule of Operating and Finance Lease Terms and Discount Rates (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>55</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R56.htm</HtmlFileName>
      <LongName>9955540 - Disclosure - Leases - Schedule of Lease Expense (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/LeasesScheduleofLeaseExpenseDetails</Role>
      <ShortName>Leases - Schedule of Lease Expense (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>56</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R57.htm</HtmlFileName>
      <LongName>9955541 - Disclosure - Leases - Schedule of Maturities Operating and Finance Lease Liabilities (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/LeasesScheduleofMaturitiesOperatingandFinanceLeaseLiabilitiesDetails</Role>
      <ShortName>Leases - Schedule of Maturities Operating and Finance Lease Liabilities (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>57</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R58.htm</HtmlFileName>
      <LongName>9955542 - Disclosure - Property and equipment, net - Schedule of Property and Equipment (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/PropertyandequipmentnetScheduleofPropertyandEquipmentDetails</Role>
      <ShortName>Property and equipment, net - Schedule of Property and Equipment (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>58</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R59.htm</HtmlFileName>
      <LongName>9955543 - Disclosure - Property and equipment, net - Narrative (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/PropertyandequipmentnetNarrativeDetails</Role>
      <ShortName>Property and equipment, net - Narrative (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>59</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R60.htm</HtmlFileName>
      <LongName>9955544 - Disclosure - Goodwill and intangible assets - Schedule of Finite-Lived Intangible Assets (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/GoodwillandintangibleassetsScheduleofFiniteLivedIntangibleAssetsDetails</Role>
      <ShortName>Goodwill and intangible assets - Schedule of Finite-Lived Intangible Assets (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>60</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R61.htm</HtmlFileName>
      <LongName>9955545 - Disclosure - Goodwill and intangible assets - Narrative (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/GoodwillandintangibleassetsNarrativeDetails</Role>
      <ShortName>Goodwill and intangible assets - Narrative (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>61</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R62.htm</HtmlFileName>
      <LongName>9955546 - Disclosure - Goodwill and intangible assets - Schedule of Amortization Expense for Finite-Lived Intangible Assets (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/GoodwillandintangibleassetsScheduleofAmortizationExpenseforFiniteLivedIntangibleAssetsDetails</Role>
      <ShortName>Goodwill and intangible assets - Schedule of Amortization Expense for Finite-Lived Intangible Assets (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>62</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R63.htm</HtmlFileName>
      <LongName>9955547 - Disclosure - Accrued expenses and other current liabilities (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/AccruedexpensesandothercurrentliabilitiesDetails</Role>
      <ShortName>Accrued expenses and other current liabilities (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.biolifesolutions.com/role/AccruedexpensesandothercurrentliabilitiesTables</ParentRole>
      <Position>63</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R64.htm</HtmlFileName>
      <LongName>9955548 - Disclosure - Commitments and contingencies (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/CommitmentsandcontingenciesDetails</Role>
      <ShortName>Commitments and contingencies (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.biolifesolutions.com/role/Commitmentsandcontingencies</ParentRole>
      <Position>64</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R65.htm</HtmlFileName>
      <LongName>9955549 - Disclosure - Long-term debt - Narrative (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/LongtermdebtNarrativeDetails</Role>
      <ShortName>Long-term debt - Narrative (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>65</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R66.htm</HtmlFileName>
      <LongName>9955550 - Disclosure - Long-term debt - Schedule of Debt (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/LongtermdebtScheduleofDebtDetails</Role>
      <ShortName>Long-term debt - Schedule of Debt (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>66</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R67.htm</HtmlFileName>
      <LongName>9955551 - Disclosure - Long-term debt - Schedule of Maturities of Long-Term Debt (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/LongtermdebtScheduleofMaturitiesofLongTermDebtDetails</Role>
      <ShortName>Long-term debt - Schedule of Maturities of Long-Term Debt (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>67</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R68.htm</HtmlFileName>
      <LongName>9955552 - Disclosure - Stock-based compensation - Schedule of Service Vesting-Based Stock Option Activity (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/StockbasedcompensationScheduleofServiceVestingBasedStockOptionActivityDetails</Role>
      <ShortName>Stock-based compensation - Schedule of Service Vesting-Based Stock Option Activity (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>68</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R69.htm</HtmlFileName>
      <LongName>9955553 - Disclosure - Stock-based compensation - Narrative (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/StockbasedcompensationNarrativeDetails</Role>
      <ShortName>Stock-based compensation - Narrative (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>69</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R70.htm</HtmlFileName>
      <LongName>9955554 - Disclosure - Stock-based compensation - Schedule of Service Vesting-Based and Market Based Restricted Stock Activity (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/StockbasedcompensationScheduleofServiceVestingBasedandMarketBasedRestrictedStockActivityDetails</Role>
      <ShortName>Stock-based compensation - Schedule of Service Vesting-Based and Market Based Restricted Stock Activity (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>70</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R71.htm</HtmlFileName>
      <LongName>9955555 - Disclosure - Stock-based compensation - Schedule of Share-Based Payment Award, Market-Based Awards Valuation Assumption (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/StockbasedcompensationScheduleofShareBasedPaymentAwardMarketBasedAwardsValuationAssumptionDetails</Role>
      <ShortName>Stock-based compensation - Schedule of Share-Based Payment Award, Market-Based Awards Valuation Assumption (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>71</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R72.htm</HtmlFileName>
      <LongName>9955556 - Disclosure - Stock-based compensation - Schedule of Stock Compensation Expense (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/StockbasedcompensationScheduleofStockCompensationExpenseDetails</Role>
      <ShortName>Stock-based compensation - Schedule of Stock Compensation Expense (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>72</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R73.htm</HtmlFileName>
      <LongName>9955557 - Disclosure - Income taxes (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/IncometaxesDetails</Role>
      <ShortName>Income taxes (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.biolifesolutions.com/role/Incometaxes</ParentRole>
      <Position>73</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R74.htm</HtmlFileName>
      <LongName>9955558 - Disclosure - Net income from continuing operations per common share (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/NetincomefromcontinuingoperationspercommonshareDetails</Role>
      <ShortName>Net income from continuing operations per common share (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.biolifesolutions.com/role/NetincomefromcontinuingoperationspercommonshareTables</ParentRole>
      <Position>74</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R75.htm</HtmlFileName>
      <LongName>9955559 - Disclosure - Segment, customer, and geographic information - Narrative (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/SegmentcustomerandgeographicinformationNarrativeDetails</Role>
      <ShortName>Segment, customer, and geographic information - Narrative (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>75</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R76.htm</HtmlFileName>
      <LongName>9955560 - Disclosure - Segment, customer, and geographic information - Schedule of Concentrations of Credit Risk and Business Risk (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/SegmentcustomerandgeographicinformationScheduleofConcentrationsofCreditRiskandBusinessRiskDetails</Role>
      <ShortName>Segment, customer, and geographic information - Schedule of Concentrations of Credit Risk and Business Risk (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>76</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R77.htm</HtmlFileName>
      <LongName>9955561 - Disclosure - Segment, customer, and geographic information - Schedule of Product Revenue Concentration (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/SegmentcustomerandgeographicinformationScheduleofProductRevenueConcentrationDetails</Role>
      <ShortName>Segment, customer, and geographic information - Schedule of Product Revenue Concentration (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>77</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R78.htm</HtmlFileName>
      <LongName>9955562 - Disclosure - Segment, customer, and geographic information - Schedule of Revenue by Geographic Areas (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/SegmentcustomerandgeographicinformationScheduleofRevenuebyGeographicAreasDetails</Role>
      <ShortName>Segment, customer, and geographic information - Schedule of Revenue by Geographic Areas (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>78</Position>
    </Report>
    <Report instance="blfs-20260331.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R79.htm</HtmlFileName>
      <LongName>9955563 - Disclosure - Employee benefit plan (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.biolifesolutions.com/role/EmployeebenefitplanDetails</Role>
      <ShortName>Employee benefit plan (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.biolifesolutions.com/role/Employeebenefitplan</ParentRole>
      <Position>79</Position>
    </Report>
    <Report>
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <LongName>All Reports</LongName>
      <ReportType>Book</ReportType>
      <ShortName>All Reports</ShortName>
    </Report>
  </MyReports>
  <InputFiles>
    <File doctype="10-Q" isDefinitelyFs="true" isUsgaap="true" original="blfs-20260331.htm">blfs-20260331.htm</File>
    <File>blfs-20260331.xsd</File>
    <File>blfs-20260331_cal.xml</File>
    <File>blfs-20260331_def.xml</File>
    <File>blfs-20260331_lab.xml</File>
    <File>blfs-20260331_pre.xml</File>
  </InputFiles>
  <SupplementalFiles>
    <File>blfs-20260331_g1.jpg</File>
  </SupplementalFiles>
  <BaseTaxonomies>
    <BaseTaxonomy items="711">http://fasb.org/us-gaap/2025</BaseTaxonomy>
    <BaseTaxonomy items="29">http://xbrl.sec.gov/dei/2025</BaseTaxonomy>
    <BaseTaxonomy items="4">http://xbrl.sec.gov/ecd/2025</BaseTaxonomy>
  </BaseTaxonomies>
  <HasPresentationLinkbase>true</HasPresentationLinkbase>
  <HasCalculationLinkbase>true</HasCalculationLinkbase>
</FilingSummary>
