I have a list of 15,000 records. I can maintain the count in a flag. Integer Counter = 15000; I want to break my main list into 3 small lists. Each list should contain 5,000 records. if(mainLst.size() > counter) { List<Custom__C> newList = new List<Custom__C>(); List<Custom__C> newList1 = new List<Custom__C>(); List<Custom__C> newList2 = new List<Custom__C>(); for(Integer i = 0; i< counter; i++) { newList1.add(mainLst[i]); } // Perform some operation with newList1 // Perform some operation with newList2 // Perform some operation with newList3 }