<?xml version="1.0" encoding="UTF-8"?><edgarSubmission xmlns="http://www.sec.gov/edgar/nport" xmlns:com="http://www.sec.gov/edgar/common" xmlns:iso="http://www.sec.gov/edgar/iso_statecodes" xmlns:ncom="http://www.sec.gov/edgar/nportcommon" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <headerData>
    <submissionType>NPORT-P/A</submissionType>
    <isConfidential>false</isConfidential>
    <accessionNumber>0001104659-20-100605</accessionNumber>
    <filerInfo>

      <filer>
        <issuerCredentials>
          <cik>0000803020</cik>
          <ccc>XXXXXXXX</ccc>
        </issuerCredentials>
      </filer>


      <seriesClassInfo>
        <seriesId>S000058531</seriesId>
        <classId>C000192399</classId>
        <classId>C000200551</classId>
      </seriesClassInfo>

    </filerInfo>
  </headerData>
  <formData>
    <genInfo>
      <regName>OBERWEIS FUNDS</regName>
      <regFileNumber>811-04854</regFileNumber>
      <regCik>0000803020</regCik>
      <regLei>549300PK13EJ83VPPR97</regLei>
      <regStreet1>3333 Warrenville Road</regStreet1>
      <regStreet2>Suite 500</regStreet2>
      <regCity>Lisle</regCity>
      <regStateConditional regCountry="US" regState="US-IL"/>
      <regZipOrPostalCode>60532</regZipOrPostalCode>
      <regPhone>800-245-7311</regPhone>
      <seriesName>Oberweis Small-Cap Value Fund</seriesName>
      <seriesId>S000058531</seriesId>
      <seriesLei>549300KCI5CUMJEUT396</seriesLei>
      <repPdEnd>2020-12-31</repPdEnd>
      <repPdDate>2020-06-30</repPdDate>
      <isFinalFiling>Y</isFinalFiling>
    </genInfo>
    <fundInfo>
      <totAssets>0</totAssets>
      <totLiabs>0</totLiabs>
      <netAssets>0</netAssets>
      <assetsAttrMiscSec>0</assetsAttrMiscSec>
      <assetsInvested>0</assetsInvested>
      <amtPayOneYrBanksBorr>0</amtPayOneYrBanksBorr>
      <amtPayOneYrCtrldComp>0</amtPayOneYrCtrldComp>
      <amtPayOneYrOthAffil>0</amtPayOneYrOthAffil>
      <amtPayOneYrOther>0</amtPayOneYrOther>
      <amtPayAftOneYrBanksBorr>0</amtPayAftOneYrBanksBorr>
      <amtPayAftOneYrCtrldComp>0</amtPayAftOneYrCtrldComp>
      <amtPayAftOneYrOthAffil>0</amtPayAftOneYrOthAffil>
      <amtPayAftOneYrOther>0</amtPayAftOneYrOther>
      <delayDeliv>0</delayDeliv>
      <standByCommit>0</standByCommit>
      <liquidPref>0</liquidPref>
      <isNonCashCollateral>N</isNonCashCollateral>
      <returnInfo>
        <monthlyTotReturns>
          <monthlyTotReturn classId="C000192399" rtn1="13.032597" rtn2="1.552065" rtn3="-0.000005"/>
          <monthlyTotReturn classId="C000200551" rtn1="12.959812" rtn2="1.554342" rtn3="-0.072883"/>
        </monthlyTotReturns>
        <monthlyReturnCats>
          <commodityContracts>
            <mon1 netRealizedGain="0" netUnrealizedAppr="0"/>
            <mon2 netRealizedGain="0" netUnrealizedAppr="0"/>
            <mon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            <forwardCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </forwardCategory>
            <futureCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </futureCategory>
            <optionCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </optionCategory>
            <swaptionCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </swaptionCategory>
            <swapCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </swapCategory>
            <warrantCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </warrantCategory>
            <otherCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </otherCategory>
          </commodityContracts>
          <creditContracts>
            <mon1 netRealizedGain="0" netUnrealizedAppr="0"/>
            <mon2 netRealizedGain="0" netUnrealizedAppr="0"/>
            <mon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            <forwardCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </forwardCategory>
            <futureCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </futureCategory>
            <optionCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </optionCategory>
            <swaptionCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </swaptionCategory>
            <swapCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </swapCategory>
            <warrantCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </warrantCategory>
            <otherCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </otherCategory>
          </creditContracts>
          <equityContracts>
            <mon1 netRealizedGain="0" netUnrealizedAppr="0"/>
            <mon2 netRealizedGain="0" netUnrealizedAppr="0"/>
            <mon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            <forwardCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </forwardCategory>
            <futureCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </futureCategory>
            <optionCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </optionCategory>
            <swaptionCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </swaptionCategory>
            <swapCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </swapCategory>
            <warrantCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </warrantCategory>
            <otherCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </otherCategory>
          </equityContracts>
          <foreignExchgContracts>
            <mon1 netRealizedGain="0" netUnrealizedAppr="0"/>
            <mon2 netRealizedGain="0" netUnrealizedAppr="0"/>
            <mon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            <forwardCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </forwardCategory>
            <futureCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </futureCategory>
            <optionCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </optionCategory>
            <swaptionCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </swaptionCategory>
            <swapCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </swapCategory>
            <warrantCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </warrantCategory>
            <otherCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </otherCategory>
          </foreignExchgContracts>
          <interestRtContracts>
            <mon1 netRealizedGain="0" netUnrealizedAppr="0"/>
            <mon2 netRealizedGain="0" netUnrealizedAppr="0"/>
            <mon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            <forwardCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </forwardCategory>
            <futureCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </futureCategory>
            <optionCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </optionCategory>
            <swaptionCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </swaptionCategory>
            <swapCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </swapCategory>
            <warrantCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </warrantCategory>
            <otherCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </otherCategory>
          </interestRtContracts>
          <otherContracts>
            <mon1 netRealizedGain="0" netUnrealizedAppr="0"/>
            <mon2 netRealizedGain="0" netUnrealizedAppr="0"/>
            <mon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            <forwardCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </forwardCategory>
            <futureCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </futureCategory>
            <optionCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </optionCategory>
            <swaptionCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </swaptionCategory>
            <swapCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </swapCategory>
            <warrantCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </warrantCategory>
            <otherCategory>
              <instrMon1 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon2 netRealizedGain="0" netUnrealizedAppr="0"/>
              <instrMon3 netRealizedGain="0" netUnrealizedAppr="0"/>
            </otherCategory>
          </otherContracts>
        </monthlyReturnCats>
        <othMon1 netRealizedGain="-839096.070000000000" netUnrealizedAppr="2570001.870000000000"/>
        <othMon2 netRealizedGain="-2568008.040000000000" netUnrealizedAppr="2328568.380000000000"/>
        <othMon3 netRealizedGain="-142380.870000000000" netUnrealizedAppr="308661.970000000000"/>
      </returnInfo>
      <mon1Flow redemption="-1082350.42" reinvestment="0" sales="0"/>
      <mon2Flow redemption="-9915544.81" reinvestment="0" sales="5750"/>
      <mon3Flow redemption="-4274707.07" reinvestment="0" sales="18677"/>


    </fundInfo>
    <signature>
      <ncom:dateSigned>2022-05-19</ncom:dateSigned>
      <ncom:nameOfApplicant>The Oberweis Funds</ncom:nameOfApplicant>
      <ncom:signature>Eric Hannemann</ncom:signature>
      <ncom:signerName>Eric Hannemann</ncom:signerName>
      <ncom:title>Treasurer</ncom:title>
    </signature>
  </formData>
</edgarSubmission>
