Current Affairs, Latest News Updates, Online Tests for TNPSC Exams

Reservation System in Tamilnadu | 69 % Reservation Policy | Full information for TNPSC Aspirants

The community wise reservation system in Tamilnadu is followed in education admissions and Job appointments.



Time Line

  • First Backward Classes Commission was established in Tamilnadu under the Chairmanship of AN Sattanathan in the year 1969. 
  • 1971 - The then DMK government increased the reservation for Backward Classes from 25 % to 31 % and SC / ST from 16 % to 18 %  . So total 49 % Reservation System was there .
  • 1980 - MGR 's AIADMK government has increased the BC reservation from 31% to 50% . No changes have made in SC/ST reservation , it was 18% only.
  • Second Backward Classes Commission was established in the year 1993 .
  • In 1992 , the Supreme Court of India ordered the Reservation Systems should not exceed 50% .
  • In 1993 Tamilnadu Government passes an Act and the Act was placed in the 9th Schedule of the Consitution of India.
  • In 2010, the Supreme Court had notified , if reservations can exceed 50 %, there should be quantifiable data for respective communities .

Present Reservation System in Tamilnadu - 69 % Quota System


Community Reservation
(Out of 69%)
Distribution , If any
BC 30 % BC (General)  - 26.5 %
BC (Muslims) - 3.5%
MBC 20%
SC 18% SC – 15 %
SC (Arunthathiar ) - 3%
ST 1 %



( Friends , if you find any corrections or wrong information in the above details, please let us know via comment section or email : mail@tnpscportal.in )


References : (Courtesy)

http://in.rediff.com/news/2006/may/30spec.htm

http://www.moneycontrol.com/news/current-affairs/tamil-nadu-to-stick-to-69-reservation-quota_564813.html

http://en.wikipedia.org/wiki/Reservation_policy_in_Tamil_Nadu

41 கருத்துகள்:

  1. sir im bc m female vao 155correct answergroup2a 174 correct answer any chance sir

    பதிலளிநீக்கு
  2. Then why other states are reluctant in increasing the percentage?

    பதிலளிநீக்கு
  3. I scored 163.5 backward class IV group can I get the job with this mark.Please inform me anyone knows

    பதிலளிநீக்கு
  4. Tnpsc la part-II English choose panna marks kammi panuvangala? Tamil than select pannanuma

    பதிலளிநீக்கு
    பதில்கள்
    1. apdi oru rules m ila ....20 % reservation for the candidates who did the eligibility qualification in tamil medium....eg. if degree is the qualification, the candidates shud hav completed degree in tamil medium

      நீக்கு
  5. Group IV la 168 marks. I'm female in BC category. Any chances to get a job??

    பதிலளிநீக்கு
  6. when will Horticulture Officer result published sir?

    பதிலளிநீக்கு
  7. I belongs to oc and am female my group 4 2014 mark is 190.5 and my communal rank is 406 y I didn't get selected

    பதிலளிநீக்கு
  8. computer center la educational qualificatn HSC,DEGREE mathi potanga sir..10th matum correcta irukku....nan diploma, degree padichirken...ippa cv ku letter vandhuruku...nan cv attend panalama...cancel paniduvangala sir..

    பதிலளிநீக்கு
  9. sir nethu nan attend pannen..comp.centre reason sonadhu accept panitaga...but nan diploma, degree one year gap la arambichu, same year la padichiruken...adhunala 10+3+3 varadhu nu solli adha pathi neraya per kitta discuss panitu, vandhu vandhu en certficate xerox pinadi perisa oru sir eludhunaru ...enakku degree level rank vandhuruku nu sonnaru....ennoda diploma mark sheet, degree mark sheet xerox eduthu varasolli nethu evening 4o'clock ayiduchu sir....inoru mam kitta counselling varuma mam nu keten, avunga therila nu doubt ah solitanga sir...ippa diploma level change panni rank poduvangala or 10th consider pani rank poduvangala...ipa rank 987 c.r.535(bc) mark 244.5 indha rank pinadi pona counselling koopduvangala....enakku doubt a irukku vela kedaikumanu...sir plz clarify..or next grp4 ku padikava...

    பதிலளிநீக்கு
  10. thank u so so much sirr...i nvr forget tnpscportal in my lifetime sir....

    பதிலளிநீக்கு
  11. SIR.........HOW MANY VACANCIES FOR BC CATEGORY(FOR JA POST).??
    WHEN CERTIFICATE VERIFICATION FOR BILL COLLECTOR, FIELD SURVEYOR, DRAFTSMAN OR IT COMES UNDER JA CERTIFICATE VERIFICATION??...

    பதிலளிநீக்கு
  12. kessal sir, im comp centre, edu.qual prb same person sir, typing cv lr vandhuruku, o.r 28 c.r 19 sir cv attd panalama sir, n JA attd panadha solanuma sir..clarify sir..

    பதிலளிநீக்கு
  13. Group IV la 238.5 marks. I'm male in MBC category overall rank 2505 and community rank 880 . Any chances to get a job??

    பதிலளிநீக்கு
  14. Dear kessal sir , Group IV la 238.5 marks. I'm male in MBC category overall rank 2505 and community rank 880 . Any chances to get a job??

    பதிலளிநீக்கு
  15. Why not we have cent precent reservation for BC and MBC for 5 years rotation.

    பதிலளிநீக்கு
  16. Dear Sir,

    I got 237 marks (158 questions Correct) in Group IV - 2014 Exam.
    Am MBC. Male candidate..
    My Community Rank(MBC) - 1012 and Over all Rank - 2891
    I finished my certificate verification successfully.
    Shall i have chances to get job.????????
    Please please clarify it to me sir
    Or want more improvement.ah sir..

    பதிலளிநீக்கு
  17. The second Backward Classes Commission was constituted in 1983. Report was submitted in 1985.
    After the Supreme Court judgment in 1992, a permanent body by name Tamil Nadu Backward Classes Commission was constituted in 1993.
    Kindly make changes in your publication, by referring to relevant government sites.

    பதிலளிநீக்கு
  18. sir i belong to oc that is general...If i attend for vao how many marks i need to score to get a job..pls reply

    பதிலளிநீக்கு
  19. பெயரில்லா2 மே, 2016 அன்று 9:19 PM

    Dear Sir, I have 150 question in group 2a and 178 question in vao. I'm mbc female. Completed pg degree. How about my results. Kindly tell.

    பதிலளிநீக்கு
  20. Sir In group IV 179 question BC women Tamil medium any chance to get involved job

    பதிலளிநீக்கு
  21. Iam sca female 115...any chance for tnpsc mains

    பதிலளிநீக்கு
  22. Iam sca female 115...any chance for tnpsc mains

    பதிலளிநீக்கு
  23. Iam sca female 115...any chance for tnpsc mains

    பதிலளிநீக்கு
  24. My mark is 100.5 BC if any chance to get job

    பதிலளிநீக்கு
  25. Hi sir i am from MBC category.. what is the cut off mark for my caste..and which group exam is easy to clear..

    பதிலளிநீக்கு
  26. If I got 150/200 in group 4 exam. I am belong to sca cast . There is any changes to get job

    பதிலளிநீக்கு
  27. Sir am handicapped studentfrom pondicherry g how much I have to get for group 4

    பதிலளிநீக்கு
  28. I am belongs to SC category Male general .How many marks should i need to take in prelims and mains to get group 2 post sir .

    பதிலளிநீக்கு

Respected visitors , this is your area. Ask your queries, post your suggestions. If you know correct answers for other friend's questions, kindly reply them. Motivate One another . Your comments will be posted soon with a small moderation.
Note:Please avoid sharing phone numbers, email Ids and posting abusive comments against the government and recruitment agencies.

//Generating PDF...'; loadingIndicator.style.position = 'fixed'; loadingIndicator.style.top = '50%'; loadingIndicator.style.left = '50%'; loadingIndicator.style.transform = 'translate(-50%, -50%)'; loadingIndicator.style.backgroundColor = 'rgba(0, 0, 0, 0.7)'; loadingIndicator.style.color = 'white'; loadingIndicator.style.padding = '20px'; loadingIndicator.style.borderRadius = '10px'; loadingIndicator.style.zIndex = '9999'; loadingIndicator.style.fontSize = '18px'; loadingIndicator.style.textAlign = 'center'; document.body.appendChild(loadingIndicator); // Function to hide loading indicator const hideLoading = () => { const indicator = document.getElementById('pdf-loading-indicator'); if (indicator) indicator.remove(); }; try { console.log('Starting PDF generation...'); // Select the post content const selectors = ['.post-body', '.entry-content', '.post-content', 'div.post', '.post-body-inner', '.post-entry']; let postContentElement = null; for (let selector of selectors) { postContentElement = document.querySelector(selector); if (postContentElement) { console.log('Found post content with selector:', selector); break; } } // Fallback if no content found if (!postContentElement) { console.error('No post content found. Tried selectors:', selectors); hideLoading(); alert('Error: Could not find post content.'); return; } // Clone the element to avoid modifying the original page const contentToCapture = postContentElement.cloneNode(true); // Find the post title let postTitle = ""; // Try different common selectors for post titles in Blogger const titleSelectors = [ 'h3.post-title', '.post-title', '.entry-title', 'h1.title', 'h1.post-title', 'h2.post-title', '.post h1', '.post h2', '.post h3', 'header h1', 'header h2' ]; for (let selector of titleSelectors) { const titleElement = document.querySelector(selector); if (titleElement) { postTitle = titleElement.textContent.trim(); console.log('Found post title:', postTitle); break; } } // If no title found, try to get it from document title if (!postTitle) { // Extract title from document title (usually "Post Title - Blog Name") const docTitle = document.title; if (docTitle.includes('-')) { postTitle = docTitle.split('-')[0].trim(); } else if (docTitle.includes('|')) { postTitle = docTitle.split('|')[0].trim(); } else { postTitle = docTitle; } console.log('Used document title as post title:', postTitle); } // Create a temporary div to hold our content for capture const captureContainer = document.createElement('div'); captureContainer.id = 'pdf-capture-container'; captureContainer.style.position = 'absolute'; captureContainer.style.left = '-9999px'; captureContainer.style.width = '800px'; // Fixed width for better control // Apply styling for Tamil text rendering captureContainer.style.fontFamily = '"Mukta Malar", "Noto Sans Tamil", "Latha", Arial, sans-serif'; captureContainer.style.fontSize = '16px'; captureContainer.style.lineHeight = '1.8'; captureContainer.style.color = '#000'; captureContainer.style.backgroundColor = '#fff'; captureContainer.style.padding = '40px'; // Increased from 20px to 40px for more space around content captureContainer.style.paddingBottom = '60px'; // Extra padding at bottom to prevent text cut-off document.body.appendChild(captureContainer); // Remove elements we don't want in the PDF contentToCapture.querySelectorAll('script, style, iframe, .print-pdf-button').forEach(el => el.remove()); // Create a heading element for the PDF if (postTitle) { const titleDiv = document.createElement('div'); titleDiv.className = 'pdf-title'; titleDiv.innerHTML = `

${postTitle}

`; // Add date if available const dateSelectors = ['.date-header', '.post-timestamp', '.post-date', '.date', '.published', '.post-meta time']; let postDate = ""; for (let selector of dateSelectors) { const dateElement = document.querySelector(selector); if (dateElement) { postDate = dateElement.textContent.trim(); break; } } if (postDate) { titleDiv.innerHTML += `
${postDate}
`; } // Add the title before the content captureContainer.appendChild(titleDiv); } // Add our cleaned content to the capture container captureContainer.appendChild(contentToCapture); // Also apply Tamil font to all child elements captureContainer.querySelectorAll('*').forEach(el => { if (el.nodeType === 1) { // Element node el.style.fontFamily = '"Mukta Malar", "Noto Sans Tamil", "Latha", Arial, sans-serif'; } }); // Verify jsPDF is available if (!window.jspdf || !window.jspdf.jsPDF) { console.error('jsPDF not loaded.'); hideLoading(); alert('Error: jsPDF library failed to load.'); return; } // Initialize jsPDF with increased margins const { jsPDF } = window.jspdf; const doc = new jsPDF({ format: 'a4', unit: 'mm', compress: true }); // Define Page Margins and dimensions - INCREASED MARGINS const pageMargin = 25; // Increased from 15 to 25mm const pageWidth = doc.internal.pageSize.getWidth(); const pageHeight = doc.internal.pageSize.getHeight(); const contentWidth = pageWidth - 2 * pageMargin; const topMargin = pageMargin; const bottomMargin = 30; // Increased from 25 to 30mm const effectivePageHeight = pageHeight - topMargin - bottomMargin; console.log(`PDF page dimensions: ${pageWidth}x${pageHeight} mm`); console.log(`Content area: ${contentWidth}x${effectivePageHeight} mm`); console.log(`Margins: top=${topMargin}mm, bottom=${bottomMargin}mm, left/right=${pageMargin}mm`); // Function to add watermark to all pages const addWatermark = () => { const pageCount = doc.internal.getNumberOfPages(); for (let i = 1; i <= pageCount; i++) { doc.setPage(i); doc.setFontSize(80); doc.setTextColor(220, 220, 220); // Lighter gray for less obstruction doc.setFont('Helvetica', 'normal'); const watermarkX = pageWidth / 4; const watermarkY = pageHeight / 1.8; doc.text('www.tnpscportal.in', watermarkX, watermarkY, { angle: 45 }); } }; // Function to add page headers (title) and footers (page numbers, blog name) const addHeadersAndFooters = () => { const pageCount = doc.internal.getNumberOfPages(); const blogName = document.querySelector('.Header h1')?.textContent || document.querySelector('#header h1')?.textContent || document.querySelector('.blog-title')?.textContent || window.location.hostname; for (let i = 1; i <= pageCount; i++) { doc.setPage(i); // Add title as header on each page (except first page which already has the main title) if (postTitle && i > 1) { doc.setFontSize(10); doc.setTextColor(80, 80, 80); doc.setFont('Helvetica', 'bold'); // Center the title const titleWidth = doc.getStringUnitWidth(postTitle) * 10 / doc.internal.scaleFactor; const titleX = (pageWidth - titleWidth) / 2; doc.text(postTitle, titleX, 10); // Position at top of page // Add a horizontal line under the header doc.setDrawColor(200, 200, 200); doc.setLineWidth(0.5); doc.line(pageMargin, 12, pageWidth - pageMargin, 12); } // Add page number to bottom right doc.setFontSize(10); doc.setTextColor(100, 100, 100); doc.setFont('Helvetica', 'normal'); doc.text(`Page ${i} of ${pageCount}`, pageWidth - 35, pageHeight - 15); // Add blog name to bottom left if (blogName) { doc.setFontSize(8); doc.text(blogName, pageMargin, pageHeight - 15); } } }; // Function to capture content in chunks if it's very large const captureContentInChunks = async (element, chunkHeight = 1000) => { const canvases = []; const elementHeight = element.offsetHeight; const chunks = Math.ceil(elementHeight / chunkHeight); console.log(`Content height: ${elementHeight}px, will capture in ${chunks} chunks`); // Add extra space at the bottom of the content to ensure proper margins element.style.paddingBottom = '50px'; // Increased padding for (let i = 0; i < chunks; i++) { // Update loading message const loadingIndicator = document.getElementById('pdf-loading-indicator'); if (loadingIndicator) { loadingIndicator.innerHTML = `ஆவணத்தை உருவாக்குகிறது...
Generating PDF...
${Math.round((i+1)/chunks*100)}%`; } try { const canvas = await html2canvas(element, { y: i * chunkHeight, height: Math.min(chunkHeight, elementHeight - i * chunkHeight), windowWidth: 800, scale: 1.5, useCORS: true, allowTaint: true, logging: false, letterRendering: true }); canvases.push({ canvas: canvas, y: i * chunkHeight }); console.log(`Captured chunk ${i+1}/${chunks}`); } catch (err) { console.error(`Error capturing chunk ${i+1}:`, err); throw new Error(`Failed to capture content chunk ${i+1}: ${err.message}`); } } return canvases; }; // Use simpler method for small content, chunking for large content captureContainer.style.visibility = 'visible'; // Make sure it's visible for html2canvas // Simple approach: try with a single capture first html2canvas(captureContainer, { scale: 1.5, useCORS: true, allowTaint: true, logging: true, letterRendering: true }).then(canvas => { // Convert canvas to image data const imgData = canvas.toDataURL('image/jpeg', 0.95); // Increased quality // Calculate dimensions to fit within PDF - respecting margins const imgWidth = contentWidth; const ratio = canvas.height / canvas.width; const imgHeight = imgWidth * ratio; console.log(`Canvas dimensions: ${canvas.width}x${canvas.height}px`); console.log(`Image dimensions in PDF: ${imgWidth}x${imgHeight}mm`); // Add a single image to PDF with proper pagination let heightLeft = imgHeight; let position = topMargin; let pageOffsetY = 0; // Add first page - with proper margin doc.addImage(imgData, 'JPEG', pageMargin, position, imgWidth, imgHeight); heightLeft -= effectivePageHeight; // Add additional pages if needed - with consistent margins while (heightLeft > 0) { doc.addPage(); pageOffsetY += effectivePageHeight; doc.addImage(imgData, 'JPEG', pageMargin, position - pageOffsetY, imgWidth, imgHeight); heightLeft -= effectivePageHeight; } // Add watermark and headers/footers addWatermark(); addHeadersAndFooters(); // Add border on each page for better visual margin definition const pageCount = doc.internal.getNumberOfPages(); for (let i = 1; i <= pageCount; i++) { doc.setPage(i); doc.setDrawColor(200, 200, 200); doc.setLineWidth(0.5); // Draw rectangle with margin offset doc.rect( pageMargin - 3, // 3mm inside the margin topMargin - 3, // 3mm inside the margin contentWidth + 6, // Add 6mm (3mm on each side) effectivePageHeight + 6 // Add 6mm (3mm on each side) ); } // Clean up and save hideLoading(); captureContainer.remove(); // Use post title in the filename if available let filename = 'post_content.pdf'; if (postTitle) { // Sanitize the title for use in a filename const sanitizedTitle = postTitle.replace(/[^a-z0-9\s]/gi, '_').replace(/\s+/g, '_').substring(0, 50); filename = sanitizedTitle + '.pdf'; } console.log('Saving PDF:', filename); doc.save(filename); }).catch(err => { console.error('Error in simple capture method, trying chunking approach:', err); // If simple method fails, try chunking approach captureContentInChunks(captureContainer).then(chunks => { console.log(`Successfully captured ${chunks.length} chunks`); // Add each chunk to the PDF chunks.forEach((chunk, index) => { const canvas = chunk.canvas; // Convert to image data const imgData = canvas.toDataURL('image/jpeg', 0.95); // Increased quality // Calculate dimensions const imgWidth = contentWidth; const ratio = canvas.height / canvas.width; const imgHeight = imgWidth * ratio; // Add the title before the content if (index > 0) { doc.addPage(); } // Add image to page with proper margins doc.addImage(imgData, 'JPEG', pageMargin, topMargin, imgWidth, imgHeight); }); // Add watermark and headers/footers addWatermark(); addHeadersAndFooters(); // Add border on each page for better visual margin definition const pageCount = doc.internal.getNumberOfPages(); for (let i = 1; i <= pageCount; i++) { doc.setPage(i); doc.setDrawColor(200, 200, 200); doc.setLineWidth(0.5); // Draw rectangle with margin offset doc.rect( pageMargin - 3, // 3mm inside the margin topMargin - 3, // 3mm inside the margin contentWidth + 6, // Add 6mm (3mm on each side) effectivePageHeight + 6 // Add 6mm (3mm on each side) ); } // Clean up and save hideLoading(); captureContainer.remove(); // Use post title in the filename if available let filename = 'post_content.pdf'; if (postTitle) { // Sanitize the title for use in a filename const sanitizedTitle = postTitle.replace(/[^a-z0-9\s]/gi, '_').replace(/\s+/g, '_').substring(0, 50); filename = sanitizedTitle + '.pdf'; } console.log('Saving PDF (chunked method):', filename); doc.save(filename); }).catch(chunkErr => { console.error('Error in chunking method:', chunkErr); hideLoading(); captureContainer.remove(); alert('Failed to generate PDF: ' + chunkErr.message); }); }); } catch (error) { console.error('PDF generation failed:', error); hideLoading(); alert('Error generating PDF: ' + error.message); } } // Add button only on single post pages function addPrintButton() { try { // Check if single post page (you can adjust this logic as needed) const isSinglePost = document.querySelector('.post') && !window.location.href.includes('/search') && !window.location.href.includes('?updated-max') && (window.location.pathname.match(/\/\d{4}\/\d{2}\/.*\.html$/) || document.querySelector('.post-body') !== null); if (!isSinglePost) { console.log('Not a single post page. Skipping button.'); return; } // Find post content container to append button after const selectors = ['.post-body', '.entry-content', '.post-content', 'div.post', '.post-body-inner', '.post-entry']; let postContainer = null; for (let selector of selectors) { postContainer = document.querySelector(selector); if (postContainer) { console.log('Found post container with selector:', selector); break; } } // Fallback if (!postContainer) { console.warn('Post container not found. Using document.body.'); postContainer = document.body; } // Avoid duplicates if (document.querySelector('button.print-pdf-button')) { console.log('Button already exists.'); return; } // Create button const button = document.createElement('button'); button.className = 'print-pdf-button'; button.innerHTML = 'Print as PDF 📄'; // Added icon for better visibility button.style.margin = '20px 0'; button.style.padding = '12px 24px'; button.style.backgroundColor = '#4CAF50'; button.style.color = 'white'; button.style.border = 'none'; button.style.cursor = 'pointer'; button.style.display = 'block'; button.style.fontWeight = 'bold'; button.style.borderRadius = '5px'; button.style.fontSize = '16px'; button.style.boxShadow = '0 2px 5px rgba(0,0,0,0.2)'; // Add hover effect button.onmouseover = function() { this.style.backgroundColor = '#45a049'; }; button.onmouseout = function() { this.style.backgroundColor = '#4CAF50'; }; button.addEventListener('click', printPostToPDF); // Append button const postElement = document.querySelector(selectors.find(sel => document.querySelector(sel))); if (postElement && postElement.parentNode) { postElement.parentNode.insertBefore(button, postElement.nextSibling); console.log('Button added after post.'); } else { postContainer.appendChild(button); console.log('Button added (fallback method).'); } } catch (error) { console.error('Error adding button:', error); } } // Add a Tamil font preloader to ensure it's available function preloadTamilFonts() { // Create a stylesheet that preloads Tamil fonts const style = document.createElement('style'); style.textContent = ` @import url('https://fonts.googleapis.com/css2?family=Mukta+Malar:wght@400;700&display=swap'); /* Force Tamil font on elements */ [lang="ta"], .ta, .tamil { font-family: "Mukta Malar", "Noto Sans Tamil", "Latha", Arial, sans-serif !important; } `; document.head.appendChild(style); // Preload the font const link = document.createElement('link'); link.rel = 'stylesheet'; link.href = 'https://fonts.googleapis.com/css2?family=Mukta+Malar:wght@400;700&display=swap'; document.head.appendChild(link); console.log('Tamil fonts preloaded'); } // Run with retries document.addEventListener('DOMContentLoaded', function() { console.log('PDF generation script loaded...'); // Preload Tamil fonts first preloadTamilFonts(); // Add the PDF button addPrintButton(); let retryCount = 0; const maxRetries = 5; const retryInterval = setInterval(function() { if (retryCount >= maxRetries) { console.log('Max retries reached.'); clearInterval(retryInterval); return; } if (!document.querySelector('button.print-pdf-button') && document.body.textContent.length > 1000) { console.log('Retry ' + (retryCount + 1) + ': Attempting to add button...'); addPrintButton(); } else { console.log('Button found or page too small, stopping retries.'); clearInterval(retryInterval); } retryCount++; }, 1000); }); //]]>